๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ข ๋“ค์–ด๊ฐ€๋ฉฐ

์ง์žฅ์—์„œ ์ž๋™ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ผ์ด ์ƒ๊ฒผ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€ ์›น์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ
๋‹ค๋ฅธ PC๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์‚ฌ๋žŒ์˜ ํ™”๋ฉด์—๋„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๋˜๊ฒŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด์—ˆ๋‹ค.

 

๋‚˜๋Š” ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 5์ดˆ๋งˆ๋‹ค ํ•œ๋ฒˆ ์”ฉ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •๋œ ์‹œ๊ฐ„๋ฅผ DB์—์„œ ๊ฐ€์ ธ์™”๊ณ ,
DB์—์„œ ๊ฐ€์ ธ์˜จ ์ˆ˜์ •๋œ ์‹œ๊ฐ„์ด ๊ธฐ์กด ์ˆ˜์ •๋œ ์‹œ๊ฐ„๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด ํ™”๋ฉด์ด refresh ๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.
(๊ตฌํ˜„ํ•  ๋• ๋ชฐ๋ž๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ์ผ์ • ์ฃผ๊ธฐ๋กœ ํ†ต์‹ ํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ Polling ์ด๋ผ๊ณ  ํ•œ๋‹จ๋‹ค.)

 

๊ทธ๋Ÿฐ๋ฐ ๋Œ€๋ฆฌ๋‹˜๊ป˜์„œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ํ‹€๋ฆฐ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์›น ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋‹ค.
๋‚˜๋Š” ์›น ์†Œ์ผ“์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค...
๊ทธ๋ž˜์„œ ๋ถ€๋žด๋ถ€๋žด ๊ณต๋ถ€ํ•˜๊ณ  Polling ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋ฅผ ์›น ์†Œ์ผ“ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค!

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  ๊ณต๋ถ€ํ–ˆ๋˜ ์›น ์†Œ์ผ“์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

โšก ์›น ์†Œ์ผ“

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ(ํ”„๋กœํ† ์ฝœ)

โšก ์›น ์†Œ์ผ“์˜ ํŠน์ง•

์–‘๋ฐฉํ–ฅ ํ†ต์‹  (Full-Duplex)

๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์„ ๋™์‹œ์—! ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•.
ํ†ต์ƒ์ ์ธ HTTP ํ†ต์‹ ์€ client ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ Server๊ฐ€ ์‘๋‹ต์„ ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์ด์ง€๋งŒ,
์›น ์†Œ์ผ“์€ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์‹ค์‹œ๊ฐ„ ๋„คํŠธ์›Œํ‚น (Real Time Networking)

์›น ํ™˜๊ฒฝ์—์„œ ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ.
ex. ์ฑ„ํŒ…, ์ฃผ์‹

โšก ์›น ์†Œ์ผ“์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ ํ†ต์‹  ๋ฐฉ์‹

์›น ์†Œ์ผ“์ด ๋‚˜์˜ค๊ธฐ ์ „,
์–‘๋ฐฉํ–ฅ ํ†ต์‹ ๊ณผ ์‹ค์‹œ๊ฐ„ ๋„คํŠธ์›Œํ‚น์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ์•„๋ณด์ž.

Polling

๐Ÿ“ข ๋“ค์–ด๊ฐ€๋ฉฐ ๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๋‚ด๊ฐ€ ์ดˆ๊ธฐ์— ๊ตฌํ˜„ํ•œ ๋ฐฉ์‹์ด๋‹ค.


์ผ์ •ํ•œ ์ฃผ๊ธฐ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ(Request)์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•.
setTimeout, setInterval ๋“ฑ์œผ๋กœ ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ(Request)์„ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค.
(๋‚˜๋Š” setInterval์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.)

 

๋ถˆํ•„์š”ํ•œ Request ์™€ Connection์„ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ฒ„์— ๋ถ€๋‹ด์„ ์ฃผ๊ฒŒ๋œ๋‹ค.
์š”์ฒญ ์ฃผ๊ธฐ๊ฐ€ ์งง์„ ์ˆ˜๋ก ๋ถ€ํ•˜๊ฐ€ ์ปค์ง„๋‹ค.
'์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค' ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„์ด๋ผ๊ณ  ๋ณด๊ธฐ์— ์• ๋งคํ•˜๋‹ค.
์š”์ฒญ ์ฃผ๊ธฐ๊ฐ€ ์งง์œผ๋ฉด ์‹ค์‹œ๊ฐ„ ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒ ์ง€๋งŒ, ์‹ค์ œ๋กœ ์‹ค์‹œ๊ฐ„์€ ์•„๋‹ˆ๋‹ค.
HTTP ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Request, Response ํ—ค๋”๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ํฌ๋‹ค.

  • Polling ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ
    • ์‘๋‹ต์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ›์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒฝ์šฐ
    • ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
    • ex. facebook ์›น ์ฑ„ํŒ…, google ๋ฉ”์‹ ์ €, msn ์›น ๋ฉ”์‹ ์ €

Long Polling

Polling๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์š”์ฒญ์„ ๋ณด๋‚ด์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ฐ”๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด๋‹ค.
์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ฐ”๋กœ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ํŠน์ • ์ด๋ฒคํŠธ๋‚˜ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‘๋‹ต์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹.
์‘๋‹ต์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์‹œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค.

 

๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š์•„ Polling ๋ณด๋‹ค ์ข‹์•„๋ณด์ด์ง€๋งŒ,
Long Polling ๋„ ๋™์‹œ ๋‹ค๋ฐœ์ ์ธ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ƒ๊ธฐ๋ฉด ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
HTTP ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Request, Response ํ—ค๋”๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ํฌ๋‹ค.

  • Long Polling ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ
    • ์‘๋‹ต์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ฒฝ์šฐ
    • ์ ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

Streaming

์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋˜, ์‘๋‹ต์„ ์™„๋ฃŒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๊ณ„์† ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹.

 

Long Polling์— ๋น„ํ•ด ์‘๋‹ต๋งˆ๋‹ค ๋‹ค์‹œ ์š”์ฒญ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ ํšจ์œจ์ ์ด์ง€๋งŒ,
์—ฐ๊ฒฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜๋ก ์—ฐ๊ฒฐ ์œ ํšจ์„ฑ ๊ด€๋ฆฌ์˜ ๋ถ€๋‹ด์ด ๋ฐœ์ƒํ•œ๋‹ค.
HTTP ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Request, Response ํ—ค๋”๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ํฌ๋‹ค.

โšก ์›น ์†Œ์ผ“ ๋™์ž‘ ๊ณผ์ •

์›น ์†Œ์ผ“ ๋™์ž‘ ๊ณผ์ •์€ ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์˜ ๋นจ๊ฐ„ ์ƒ‰ ๋ฐ•์Šค์— ํ•ด๋‹นํ•˜๋Š” Opening Handshake
์œ„ ์ด๋ฏธ์ง€์˜ ๋…ธ๋ž€ ์ƒ‰ ๋ฐ•์Šค์— ํ•ด๋‹นํ•˜๋Š” Data transfer
์œ„ ์ด๋ฏธ์ง€์˜ ๋ณด๋ผ ์ƒ‰ ๋ฐ•์Šค์— ํ•ด๋‹นํ•˜๋Š” Closing Handshake

๐Ÿค Handshake

Opening Handshake ์™€ Closing Handshake ๋Š” ์ผ๋ฐ˜์ ์ธ HTTP TCP ํ†ต์‹ ์˜ ๊ณผ์ • ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
(ํ•ธ๋“œ์‰์ดํ‚น ๋ฐ HTTP TCP์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ด ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃฌ ์ ์žˆ๋‹ค. ์ฐธ๊ณ !)

์ ‘์† ์š”์ฒญ์€ HTTP ๋กœ ํ•œ ๋’ค, ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. (WS)

์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ ์œ„ํ•œ HTTP ํ—ค๋”๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
(ws://localhost:8080/chat์œผ๋กœ ์ ‘์†ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.)

๐Ÿค“ ์š”์ฒญ(Request) ํ—ค๋”

GET /chat HTTP/1.1
Host: localhost:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://localhost:9000

GET /chat HTTP/1.1
์›น์†Œ์ผ“์˜ ํ†ต์‹  ์š”์ฒญ์—์„œ,
HTTP ๋ฒ„์ „์€ 1.1 ์ด์ƒ์ด์–ด์•ผํ•˜๊ณ  GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ–”๋‹ค.

 

Upgrade
ํ”„๋กœํ† ์ฝœ์„ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ—ค๋”.
์›น์†Œ์ผ“ ์š”์ฒญ์‹œ์—๋Š” ๋ฐ˜์Šค์— websocket ์ด๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ,
์ด ๊ฐ’์ด ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์ด๋ฉด cross-protocol attack ์ด๋ผ๊ณ  ๊ฐ„์ฃผํ•˜์—ฌ ์›น ์†Œ์ผ“ ์ ‘์†์„ ์ค‘์ง€์‹œํ‚จ๋‹ค.

 

Connection
ํ˜„์žฌ์˜ ์ „์†ก์ด ์™„๋ฃŒ๋œ ํ›„ ๋„คํŠธ์›Œํฌ ์ ‘์†์„ ์œ ์ง€ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด.
์›น ์†Œ์ผ“ ์š”์ฒญ ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ Upgrade ๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
Upgrade ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ๊ฐ’์ด ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์ด๋ฉด ์›น์†Œ์ผ“ ์ ‘์†์„ ์ค‘์ง€์‹œํ‚จ๋‹ค.

 

Sec-WebSocket-Key
์œ ํšจํ•œ ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ‚ค ๊ฐ’

 

Sec-WebSocket-Protocol
์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์›น ์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ ์ง€์ •.
ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ

 

Sec-WebSocket-Version
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „.
ํ˜„์žฌ ์ตœ์‹  ๋ฒ„์ „ 13

 

Origin
CORS ์ •์ฑ…์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ—ค๋”.
Cross-Site Websocket Hijacking๊ณผ ๊ฐ™์€ ๊ณต๊ฒฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•จ.

๐Ÿค“ ์‘๋‹ต(Response) ํ—ค๋”

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

HTTP/1.1 101 Switching Protocols
101์€ HTTP์—์„œ WS๋กœ ํ”„๋กœํ† ์ฝœ ์ „ํ™˜์ด ์Šน์ธ ๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์ฝ”๋“œ์ด๋‹ค.

 

Sec-WebSocket-Accept
์š”์ฒญ ํ—ค๋”์˜ Sec-WebSocket-Key์— ์œ ๋‹ˆํฌ ์•„์ด๋””๋ฅผ ๋”ํ•ด์„œ SHA-1๋กœ ํ•ด์‹ฑํ•œ ํ›„ base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.
์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ๊ฐœ์‹œ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฐ๋‹ค.

๐Ÿค Data Transfer

Opening HandShake์—์„œ ์Šน์ธ์ด ๋‚˜๊ณ ๋‚˜๋ฉด,
์›น ์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ๋กœ ๋…ธ๋ž€์ƒ‰ ๋ฐ•์Šค ๋ถ€๋ถ„์ธ Data transfer ์ด ์ง„ํ–‰๋œ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”์‹œ์ง€๋ผ๋Š” ๋‹จ์œ„๋กœ ์ „๋‹ฌ๋œ๋‹ค.

 

๋ฉ”์‹œ์ง€
์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„(frame)์ด ๋ชจ์—ฌ์„œ ๊ตฌ์„ฑ๋˜๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ฉ”์‹œ์ง€ ๋‹จ์œ„

 

ํ”„๋ ˆ์ž„
ํ†ต์‹ ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ.
์‘? ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋Š” ํŒจํ‚ท์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋‚˜? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฌผ๋ก  ๋งž๋Š” ๋ง์ด๋‹ค.
ํŒจํ‚ท์€ ์ „ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋œปํ•˜๊ณ ,
ํ”„๋ ˆ์ž„์€ ๋ฐ์ดํ„ฐ ๋งํฌ๊ณ„์ธต(์ด๋”๋„ท)์—์„œ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์ž‘์€ ํ—ค๋” + payload ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

โšก Socket.io

์›น์†Œ์ผ“์€ HTML5์˜ ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ์†Œ์ผ“์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๊ฐ€ Socket.io์ด๋‹ค.

 

์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์›น ์†Œ์ผ“ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
์›น์†Œ์ผ“, ํด๋ง, ์ŠคํŠธ๋ฆฌ๋ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜์˜ API๋กœ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฅ˜์— ์ƒ๊ด€ ์—†์ด ์‹ค์‹œ๊ฐ„ ์›น์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  ์›น์†Œ์ผ“์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๋Œ“๊ธ€, ํ•˜ํŠธ, ํ”ผ๋“œ๋ฐฑ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค๐Ÿ‘ผ

 

 

์ฐธ์กฐ ๋ฌธ์„œ

Seize the day!

Spring MVC | Spring Boot | Spring Security | Mysql | Oracle | PostgreSQL | Vue.js | Nuxt.js | React.js | TypeScript | JSP | Frontend | Backend | Full Stack | ์ž๊ธฐ๊ณ„๋ฐœ | ๋ฏธ๋ผํด ๋ชจ๋‹ | ์ผ์ƒ