Community

๐Ÿ“• ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ํ†ต์‹ ๋ฐฉ๋ฒ• ํ•œ๋ฒˆ์— ์ •๋ฆฌํ•ด ๋“œ๋ฆผ

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์— ํ†ต์‹  ๋ฐฉ๋ฒ•์€ ์ˆ˜๋…„์— ๊ฑธ์ณ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”๋ฐ์š”, ๊ฐ ๋ฐฉ๋ฒ•์—๋Š” ๊ณ ์œ ํ•œ ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์ด ๋‹ค์†Œ ์ž๊ทน์ (?) ์ž…๋‹ˆ๋‹ค๋งŒ, ์ด์— ๋Œ€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ์ข‹์€ ๊ธ€์ด ์žˆ์–ด ๋งŽ์€ ๋ถ„๋“ค์ด ๋ณด์‹œ๋ฉด ์ข‹์„๋“ฏ ํ•˜์—ฌ ์–ด๊ทธ๋กœ๋ฅผ ํ•œ๋ฒˆ ๋Œ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ธ€์—์„œ ์ •๋ฆฌํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Long-Polling ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์š”์ฒญํ•˜๋Š” ์ผ๋ฐ˜ Polling ๊ณผ ๋‹ฌ๋ฆฌ Long-Polling ์€ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„์™€์˜ Connection ์„ ์œ ์ง€ํ•จ์œผ๋กœ์จ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰๊ฐ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์„œ๋ฒ„์™€์˜ Connection ์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋ฐ›์€ ์งํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒˆ๋กœ์šด Long-Polling ์š”์ฒญ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณด๋‹ค ์ฆ‰๊ฐ์ ์ธ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ๊ณผ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๐Ÿ“Œ WebSocket WebSocket ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๋‹จ์ผ ์žฅ๊ธฐ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ „์ด์ค‘ ํ†ต์‹  ์ฑ„๋„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ HTTP ์š”์ฒญ-์‘๋‹ต ์ฃผ๊ธฐ์˜ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์–ด ๋ผ์ด๋ธŒ ์ฑ„ํŒ…, ๊ฒŒ์ž„ ๋˜๋Š” ๊ธˆ์œต ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ๊ณผ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. WebSocket ์€ ์—ฐ๊ฒฐ์ด ์„ค์ •๋œ ํ›„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ๋†’์€ ๋นˆ๋„์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ Server-Sent-Events(SSE) Server-Sent-Events(SSE) ๋Š” HTTP ๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์„œ๋ฒ„ ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. WebSocket ๊ณผ ๋‹ฌ๋ฆฌ Server-Sent-Events ๋Š” ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ์˜ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  ์ „์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ผ์ด๋ธŒ ๋‰ด์Šค ํ”ผ๋“œ, ์Šคํฌ์ธ  ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ๋˜๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ์ƒํ™ฉ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. Server-Sent-Events ๋Š” ์„œ๋ฒ„๊ฐ€ ์ „์ฒด ๋ณธ๋ฌธ์„ ํด๋ผ์ด์–ธํŠธ์— ํ•œ ๋ฒˆ์— ์ „์†กํ•˜๊ณ  ๋๋‚ด๋Š”๊ฒŒ ์•„๋‹Œ ์—ฐ๊ฒฐ์„ ์—ด์–ด๋‘๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ํ•œ ์ค„์”ฉ ์ „์†กํ•˜์—ฌ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ๋‹จ์ผ HTTP ์š”์ฒญ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ WebTransport API WebTransport ๋Š” ์›น ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํšจ์œจ์ ์ด๊ณ  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง์€ ํ†ต์‹ ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ตœ์‹  API ์ž…๋‹ˆ๋‹ค. HTTP/3 QUIC ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹๊ณผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์„œ ์—†์ด ์ „์†ก๋˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด WebTransport ๋Š” ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„, ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ํ˜‘์—… ํ”Œ๋žซํผ๊ณผ ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ ๋„คํŠธ์›Œํ‚น์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ WebRTC WebRTC (Web Real-Time Communication)๋Š” ๋ณต์žกํ•œ ์„œ๋ฒ„ ์ธํ”„๋ผ๋‚˜ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ ์—†์ด ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ง์ ‘ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ (RTC) ๊ธฐ๋Šฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด์ž API ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ์˜ค๋””์˜ค, ๋น„๋””์˜ค ๋ฐ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ P2P ์—ฐ๊ฒฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. WebRTC ๋Š” NAT ๋ฐ ๋ฐฉํ™”๋ฒฝ์„ ํ†ตํ•ด ์ž‘๋™ํ•˜๊ณ  ICE, STUN ๋ฐ TURN๊ณผ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ ํ”ผ์–ด ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ†ต์‹  ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ๋‹จ์  ๋ฐ ํ•œ๊ณ„๋Š” ๊ณต์œ ๋“œ๋ฆฐ ์›๋ฌธ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ“š ์›๋ฌธ * https://rxdb.info/articles/websockets-sse-polling-webrtc-webtransport.html

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค