-
Notifications
You must be signed in to change notification settings - Fork 0
library websocket
WebSocket์ ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์ค๊ณ๋ ํต์ ํ๋กํ ์ฝ๋ก,
TCP(Transmission Control Protocol)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค.
๐ก ํต์ฌ:
โํ ๋ฒ ์ฐ๊ฒฐํ๋ฉด, ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์์ ์ผ๋ก ์๋ฐฉํฅ ํต์ ์ ์ํํ ์ ์๋คโ
- TCP ๊ธฐ๋ฐ โ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก ๋ณด์ฅ
- ๋ฉ์์ง ์์ ๋ณด์ฅ
- ์๋ฐฉํฅ(Full-Duplex) ํต์ ๊ฐ๋ฅ
- ํด๋ผ์ด์ธํธ โ ์๋ฒ ๋ฟ๋ง ์๋๋ผ
- ์๋ฒ โ ํด๋ผ์ด์ธํธ๋ ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
๐ HTTP์ ๋ฌ๋ฆฌ ์๋ฒ๊ฐ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์
- ์ต์ด ์ฐ๊ฒฐ ์ดํ ์ฐ๊ฒฐ์ ์ ์ง
- ์ถ๊ฐ HTTP ์์ฒญ ์์ด ๊ณ์ ํต์ ๊ฐ๋ฅ
๐ ์ ํ ํตํ์ฒ๋ผ ๊ณ์ ์ฐ๊ฒฐ๋ ์ํ ์ ์ง
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์ฆ์ ์ ๋ฌ ๊ฐ๋ฅ
- Polling ์์ด ์ค์๊ฐ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ ํ๋ ์(Frame) ๋จ์๋ก ์ ๋ฌ๋จ
ํ๋ ์ ์ข ๋ฅ:
- ํ ์คํธ ํ๋ ์ (Text Frame)
- ๋ฐ์ด๋๋ฆฌ ํ๋ ์ (Binary Frame)
- Ping / Pong ํ๋ ์ (์ฐ๊ฒฐ ์ ์ง ํ์ธ)
- Close ํ๋ ์ (์ฐ๊ฒฐ ์ข ๋ฃ)
๐ก ์ฐธ๊ณ :
- ํจํท(Packet)์ ๋คํธ์ํฌ ๊ณ์ธต ๋จ์
- ํ๋ ์(Frame)์ WebSocket ํ๋กํ ์ฝ ๋จ์
sequenceDiagram
participant Client
participant Server
Client->>Server: HTTP ์์ฒญ (Upgrade: WebSocket)
Server->>Client: 101 Switching Protocols
Client->>Server: ๋ฉ์์ง ์ ์ก (Frame)
Server->>Client: ๋ฉ์์ง ์ ์ก (Frame)
WebSocket์ HTTP ๊ธฐ๋ฐ์ผ๋ก ์ฐ๊ฒฐ์ ์์ํ ํ ํ๋กํ ์ฝ์ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
GET /socket
Host: example.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: randomKey
Sec-WebSocket-Version: 13101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: generatedKey์๋ฏธ:
-
Upgrade: websocketโ WebSocket์ผ๋ก ์ ํ ์น์ธ -
101 Switching Protocolsโ ํ๋กํ ์ฝ ์ ํ ์๋ฃ
๐ ์ด ์ดํ๋ถํฐ๋ HTTP๊ฐ ์๋ WebSocket ํ๋กํ ์ฝ๋ก ํต์
-
ws://โ ์ผ๋ฐ WebSocket -
wss://โ ๋ณด์ WebSocket (TLS ์ ์ฉ)
๊ด๊ณ:
ws : wss = http : https
WebSocket ์ฐ๊ฒฐ ํ ๋ค์ ์ด๋ฒคํธ ์ฌ์ฉ ๊ฐ๋ฅ:
-
openโ ์ฐ๊ฒฐ ์ฑ๊ณต -
messageโ ๋ฉ์์ง ์์ -
errorโ ์ค๋ฅ ๋ฐ์ -
closeโ ์ฐ๊ฒฐ ์ข ๋ฃ
- ์ค์๊ฐ ์๋ฐฉํฅ ํต์
- ์๋ฒ Push ๊ฐ๋ฅ
- Polling ์ ๊ฑฐ๋ก ๋คํธ์ํฌ ๋น์ฉ ์ ๊ฐ
- ์ฑํ , ์๋ฆผ, ๊ฒ์ ๋ฑ์ ์ ํฉ
์ํ ๊ด๋ฆฌ ํ์
: ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํด์ผ ํ๋ฏ๋ก ์๋ฒ์์ ์ํ ๊ด๋ฆฌ ํ์
์๋ฒ ๋ถํ ์ฆ๊ฐ
: ๋ง์ ์ฐ๊ฒฐ์ ๋์์ ์ ์งํด์ผ ํจ
์๋ฌ ์ฒ๋ฆฌ ํ๊ณ
: ์ฐ๊ฒฐ์ด ๋์ด์ง ์ด์ ๋ฅผ ์ ํํ ์๊ธฐ ์ด๋ ค์
์ฌ์ฐ๊ฒฐ ์ฒ๋ฆฌ ํ์
: ์๋ ์ฌ์ฐ๊ฒฐ ์ง์ โ, ํด๋ผ์ด์ธํธ์์ ์ง์ ๊ตฌํ ํ์
๋ธ๋ผ์ฐ์ ์์กด์ฑ
: HTML5 ๊ธฐ๋ฐ โ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฏธ์ง์
โ๏ธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ
- โ๏ธ ์ค์
- ๐ฆ ์ค์น๋ฒ
- โ๏ธ ์ค์
- ๐ ๏ธ ์ด์ ๋ฐ ๊ด๋ฆฌ ๋ช ๋ น์ด
- ๐ฆ ์ค์น๋ฒ
๐ง ๊ฐ๋
- ๐ฏ ObserverPattern
- ๐ฏ MediatorPattern