[Network] WebSocket, Socket.IO

seonjeongยท2023๋…„ 5์›” 30์ผ
0

Network

๋ชฉ๋ก ๋ณด๊ธฐ
2/10

๐Ÿ’– WebSocket

HTML5 ์›น ํ‘œ์ค€ ๊ธฐ์ˆ 
์–‘๋ฐฉํ–ฅ(bidirectional) ํ†ต์‹  ํ”„๋กœํ† ์ฝœ
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„(real-time) ํ†ต์‹ ์ด ๊ฐ€๋Šฅ

๐Ÿ”ฅ HTTP์™€ WebSocket

  • HTTP๋Š” ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งŒ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์ด๋ฉฐ stateless ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค
  • HTTP์™€ ๋‹ฌ๋ฆฌ WebSocket์€ ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋˜๋ฉด ์–‘์ชฝ์—์„œ ์ง€์†์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์–ด๋Š ํ•œ์ชฝ์— ์˜ํ•ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ™œ์„ฑ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— stateful ํ”„๋กœํ† ์ฝœ์ด๋‹ค

๐Ÿ”ฅ ๋™์ž‘๊ณผ์ •

Handshake : ํ†ต์‹ ์—์„œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์›น ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , Upgrade ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์„œ WebSocket ์—ฐ๊ฒฐ๋กœ ์ „ํ™˜ํ•จ์„ ๋‚˜ํƒ€๋ƒ„
// ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
  1. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ํ™•์ธํ•˜๊ณ , 101 Switching Protocols ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์„œ WebSocket ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•จ
// ์„œ๋ฒ„ ์‘๋‹ต
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

๐Ÿ’– Socket.IO

์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์œ„ํ•ด ์›น์†Œ์ผ“ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
HTML5 ์›น ํ‘œ์ค€ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋‹ค. (์›น์†Œ์ผ“๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…)
HTML5 ์ด์ „์˜ ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„๋œ ์„œ๋น„์Šค ์—์„œ ์›น ์†Œ์ผ“์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

What Socket.IO ?

Socket.IO is a library that enables low-latency, bidirectional and event-based communication between a client and a server.

It is built on top of the WebSocket protocol and provides additional guarantees like fallback to HTTP long-polling or automatic reconnection.

** latency : ์–ด๋– ํ•œ ๋ฌผ๋ฆฌ์  ๋ณ€ํ™”์— ๋Œ€ํ•œ ์›์ธ๊ณผ ๊ฒฐ๊ณผ ๊ฐ„์˜ ์ง€์—ฐ ์‹œ๊ฐ„




Reference

https://kbj96.tistory.com/46
https://doozi0316.tistory.com/entry/WebSocket%EC%9D%B4%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95-socketio-Polling-Streaming

https://socket.io/docs/v4/#what-socketio-is

profile
๐Ÿฆ‹๊ฐœ๋ฐœ ๊ณต๋ถ€ ๊ธฐ๋ก๐Ÿฆ‹

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด