๐งฒ์ฝ์ผ์ Web Socket๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
HTML5์์ ๋์ ๋ ์๋ฐฉํฅ ํต์ ํ๋กํ ์ฝ
๐ ์ ์ก ์ฃผ์: ws:// (๊ธฐ๋ณธ) ๋๋ wss:// (TLS ๋ณด์)
๊ธฐ์กด HTTP ๊ธฐ๋ฐ ๋ฐฉ์๋ค์ ์ค์๊ฐ์ฑ์ ํ๊ณ๊ฐ ์์์:
| ๋ฐฉ์ | ํน์ง | ๋ฌธ์ ์ |
|---|---|---|
| Polling | ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฒญ ์ ์ก | ๋คํธ์ํฌ ๋ญ๋น |
| Long Polling | ์๋ต๊น์ง ์ฐ๊ฒฐ ์ ์ง | ์๋ฒ ๋ฆฌ์์ค ๋ถ๋ด |
| Server-Sent Events (SSE) | ์๋ฒ โ ํด๋ผ์ด์ธํธ ๋จ๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ | ํด๋ผ์ด์ธํธ โ ์๋ฒ ์ ์ก ๋ถ๊ฐ |
| HTTP | ํค๋ ๋ฐ๋ณต ์ ์ก์ผ๋ก ์ค๋ฒํค๋ ํผ | ๋จ๋ฐฉํฅ & ๋นํจ์จ |
โ WebSocket์ ์ง์ ์ฐ๊ฒฐ, ํค๋ ์๋ต, ์๋ฐฉํฅ ์ค์๊ฐ ํต์ ์ ๋ชจ๋ ๋ง์กฑ
Upgrade: websocket ํค๋ ํฌํจํ์ฌ ์์ฒญ101 Switching Protocols ์๋ต์ผ๋ก ์๋ฝSec-WebSocket-Key โ Sec-WebSocket-Accept๋ก ๊ฒ์ฆGET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xxxxxxxxx==
Sec-WebSocket-Version: 13
FIN | Opcode | Payload Length | Masking Key | Payloadํ ์คํธ ๋ฉ์์ง(UTF-8), ์ด์ง ๋ฐ์ดํฐ ๋ฑ ๋ชจ๋ ์ ์ก ๊ฐ๋ฅ
Close ํ๋ ์ ์ ์กClose ํ๋ ์์ผ๋ก ์๋ตํ๋ฉด ์ฐ๊ฒฐ ์ข
๋ฃ๋ค์๊ณผ ๊ฐ์ด ์ค์๊ฐ์ฑ๊ณผ ์์ ์ฐ๊ฒฐ์ด ์ค์ํ ์๋น์ค์ ์ ํฉํฉ๋๋ค.
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ํน์ง |
|---|---|
| Socket.IO | ์๋ ํด๋ฐฑ ์ง์ (WebSocket ๋ฏธ์ง์ ๋ธ๋ผ์ฐ์ ๋์), ๋ค์์คํ์ด์ค/์ด๋ฒคํธ ์ง์ |
| STOMP | ๋ฉ์์ง ํ๋กํ ์ฝ (ex. Spring WebSocket์์ ์์ฃผ ์ฌ์ฉ) |
| SignalR | .NET ๊ธฐ๋ฐ ์ค์๊ฐ ํ๋ ์์ํฌ |
๐ Socket.IO๋ ๋ด๋ถ์ ์ผ๋ก WebSocket โ Long Polling์ผ๋ก ์๋ ๋์ฒดํ์ฌ ํธํ์ฑ ํ๋ณด
| ํญ๋ชฉ | WebSocket |
|---|---|
| ์ฐ๊ฒฐ ๋ฐฉ์ | ์ง์ ์ฐ๊ฒฐ (Full-Duplex) |
| ๊ธฐ๋ฐ | TCP |
| ์ฅ์ | ์ค์๊ฐ์ฑ, ์๋ฐฉํฅ, ํค๋ ์ค๋ฒํค๋ ์์ |
| ๋จ์ | ์ ์ง ๋น์ฉ (์ฐ๊ฒฐ ์ ์ ์ง) |
| ํ์ฉ ์ | ์ฑํ , ๊ฒ์, ์ค์๊ฐ ๋ชจ๋ํฐ๋ง |