๐ Polling / Long Polling / Server Sent Event / WebSocket ์ ๋ฆฌ
์๋ฒ์ event๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ 4๊ฐ์ง ๋ฐฉ๋ฒ
polling
- ํด๋ผ์ด์ธํธ๊ฐ ํ๋ฒํ http request๋ฅผ ์๋ฒ๋ก ๊ณ์ ๋ ๋ ค์ ์ด๋ฒคํธ ๋ด์ฉ์ ์ ๋ฌ๋ฐ๋ ๋ฐฉ์์ด๋ค.
- ๊ฐ์ฅ ์ฌ์ด๋ฐฉ๋ฒ์ด์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ๊ณ์์ ์ผ๋ก request๋ฅผ ๋ ๋ฆฌ๊ธฐ๋๋ฌธ์ ํด๋ผ์ด์ธ๊ฐ ๋ง์์ง๋ฉด ์๋ฒ์ ๋ถ๋ด์ด ๊ธ์ฆํ๊ฒ ๋๋ค. http request connection์ ๋งบ๊ณ ๋๋๊ฒ ์์ฒด๊ฐ ๋ถ๋ด์ด ๋ง์ ๋ฐฉ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ์์ ์ค์๊ฐ์ ๋์ ๋น ๋ฅธ ์๋ต์ ๊ธฐ๋ํ๊ธฐ๋ ์ด๋ ต๋ค.
- polling์ http ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์๋ค.
- ํ์ง๋ง ์ผ์ ํ๊ฒ ๊ฐฑ์ ๋๋ ์๋ฒ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ด๋ค. (ex. ๋์๋ณด๋ ๊ฐฑ์ )
Http Overhead ๋?
์ ๋ณด์ ์ ๋ขฐ์ฑ ํ๋จ์ ์ํ, ๋ณด๋ด์ง๋ ํค๋ ๊ฐ์ ์ ๋ณด ๋๋ฌธ์ ์คํ๋ ค ๋ฐ์ดํฐ๋์ด๋ ์ฒ๋ฆฌ์๊ฐ์ด ์ฆ๊ฐํ๋๊ฑธ ๋งํ๋ค.
[WEB] ๐ HTTP Overhead ๋?
์ค๋ฒํค๋ ๋? ์ฒ๋ฆฌ ์๊ฐ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ด ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ์์ ๋งํ๋ค. ex) A๋ผ๋ ์ฒ๋ฆฌ๋ฅผ ์คํํ๋ค๋ฉด 3์ด ๊ฑธ๋ฆฐ๋ค. ์์ ์ฑ์ ๊ณ ๋ คํ์ฌ B๋ผ๋ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ์๊ฐ์ด 10์ด๊ฐ ๊ฑธ๋ ธ๋ค.
inpa.tistory.com
long-polling
- ์๋ฒ ์ธก์์ ์ ์์ ์ด์ด๋๋ ์๊ฐ์ ๊ธธ๊ฒํ๋ ๋ฐฉ์.
- ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก http request๋ฅผ ๋ ๋ฆฐ๋ค.
- ์๋ฒ์ ์๋ต์ ๋ํ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ์๋ฒ์์ ํด๋น ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌํ ์ด๋ฒคํธ๊ฐ ์๋ค๋ฉด ๊ทธ์๊ฐ response ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ฉด์ ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋๋ค.
- ํด๋ผ์ด์ธํธ์์๋ ๊ณง๋ฐ๋ก ๋ค์ http request๋ฅผ ๋ ๋ ค์ ์๋ฒ์ ๋ค์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ๋ฐฉ์์ด๋ค.
- ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก http request๋ฅผ ๋ ๋ฆฐ๋ค.
- ์ผ๋ฐ polling ๋ฐฉ์๋ณด๋ค๋ ์๋ฒ์ ๋ถ๋ด์ด ์ค๊ฒ ์ง๋ง ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ ์ด๋ฒคํธ๋ค์ ์๊ฐ๊ฐ๊ฒฉ์ด ์ข๋ค๋ฉด polling ๊ณผ ๋ณ ์ฐจ์ด๊ฐ ์๊ฒ ๋๋ฉฐ, ๋ค์์ ํด๋ผ์ด์ธํธ์๊ฒ ๋์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋ ๊ฒฝ์ฐ์๋ ๊ณง๋ฐ๋ก ๋ค์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ ์์ ์๋ํ๋ฉด์ ์๋ฒ์ ๋ถ๋ด์ด ๊ธ์ฆํ๊ฒ ๋๋ค.
- hang๊ฑธ๋ฆฐ๊ฒ ์ฒ๋ผ ์๋ต์ ๋ณด๋ฅํ๊ธฐ ๋๋ฌธ์ hang get ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- ํน์ฑ์ ๊ตฌํ์ ์ํด ๋ฌดํ iframe์ script tag๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ผผ์๊ฐ ํ์ํ๋ค.
websocket
- ์๋ฐฉํฅ ์ฑ๋์ ์ด์ฉํด ์ฑํ ๋ฐฉ ์ฒ๋ผ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
- ๊ธฐ์กด http์์ฒญ ์๋ต ๋ฐฉ์์ ์์ฒญํ ๊ทธ ํด๋ผ์ด์ธํธ์๋ง ์๋ต์ด ๊ฐ๋ฅํ๋๋ฐ, ws ํ๋กํ ์ฝ์ ํตํด ์น์์ผ ํฌํธ์ ์ ์ํด ์๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ด๋ฒคํธ ๋ฐฉ์์ผ๋ก ์๋ตํ๋ค
- ์ต์ด ์ ์์ด ์ผ๋ฐ http request๋ฅผ ํตํด handshaking๊ณผ์ ์ ํตํด ์ด๋ฃจ์ด ์ง๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด์ 80, 443 ํฌํธ๋ก ์ ์์ ํ๋ฏ๋ก ์ถ๊ฐ๋ก ๋ฐฉํ๋ฒฝ์ ์ด์ง ์๊ณ ๋ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๊ณ , http ๊ท๊ฒฉ์ธ CORS์ ์ฉ์ด๋ ์ธ์ฆ๋ฑ์ ๊ณผ์ ์ ๊ธฐ์กด๊ณผ ๋์ผํ๊ฒ ๊ฐ์ ๊ฐ ์ ์๋๊ฒ์ด ์ฅ์ ์ด๋ค.
- ๋จ, websocket ํ๋กํ ์ฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ์ด์ค ์ฐ๊ฒฐ๊ณผ ์๋ก์ด ์น์์ผ ์๋ฒ๊ฐ ํ์ํ๋ค.
Socket.io
node.js ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ธฐ์ ๋ก ์์ฒด ์คํฉ์ผ๋ก ๋ง๋ค์ด์ง socket.io ์๋ฒ๋ฅผ ๋ง๋ค๊ณ socket.io ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์ค์๊ฐ ํต์ ์ด ๊ฐ๋ฅํด์ง๋ค.
[SOCKET] ๐ WS ์น์์ผ ์ฌ์ฉํด๋ณด๊ธฐ
์ ํํ์ต [WEB] ๐ ์น ์์ผ (Socket) ์ญ์ฌ๋ถํฐ ์ ๋ฆฌ โ ์น ๊ฐ๋ฐ์ ์ฒ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋ค๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ํต์ ์ ๋ชจ๋ HTTP ํ๋กํ ์ฝ๋ง ์ด์ฉํด์ ์ด๋ฃจ์ด์ง๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ์น
inpa.tistory.com
[SOCKET] ๐ Socket.IO ์ฌ์ฉ ํด๋ณด๊ธฐ
Socket.IO node.js์์๋ ๋ง์ ์น ์์ผ ๊ตฌํ์ฒด๊ฐ ์๋ค. socket.io์ ws๊ฐ ์๋ค. ws๋ ๊ธฐ๋ณธ์ ์ถฉ์คํ ๋๋์ด๊ณ , socket.io๋ ๊ธฐ๋ณธ๋ ๊ธฐ๋ณธ์ด์ง๋ง ๋ญ๊ฐ ์๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์๋ฅผ ๋ค์ด room์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ด
inpa.tistory.com
SSE (Server-Sent Events)
- HTML5 ํ์ค์์ด๋ฉฐ ์ด๋์ ๋ ์น์์ผ์ ์ญํ ์ ํ๋ฉด์ ๋ ๊ฐ๋ณ๋ค.
- websocket ๊ณผ ๊ฐ์ด ์๋ฐฉํฅ์ด ์๋ server -> client ๋จ๋ฐฉํฅ์ด๊ธฐ์ ์๋ฒ์ event ๋ message๋ฅผ client ๋ก push ํ๋ ์์ ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ค.
- ์๋ฐฉํฅ์ด ์๋๊ธฐ์ ์์ฒญ ์ ajax๋ก ์ฝ๊ฒ ์ด์ฉํ ์ ์๋ค.
- ์ฌ์ ์ ์ฒ๋ฆฌ ๊ฐ์ ๋๋ถ๋ถ์ ์ ์์ค ์ฒ๋ฆฌ๊ฐ ์๋์ผ๋ก ์ง์๋๋ค.
- IE๋ ๊ธฐ๋ณธ ๋ฏธ์ง์์ด์ง๋ง, polyfill์ ์ด์ฉํ ๊ฒฝ์ฐ IE๋ฅผ ํฌํจํ ํฌ๋ก์ค๋ธ๋ผ์ฐ์ง์ด ๊ฐ๋ฅํ๋ค.
[NODE] ๐ Server Sent Events ๐ฏ ์ ๋ฆฌ (+์ฌ์ฉ๋ฒ)
SSE - Server Sent Events ๋? SSE๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก, ์ง์์ ์ผ๋ก Streaming ํ๋ ๊ธฐ์ ์ด๋ค. SSE๋ ์น ํ์ค์ผ๋ก์จ IE๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ฉฐ, IE์ญ์ polyfill์ ํตํด ์ง์์ด ๊ฐ๋ฅํ.
inpa.tistory.com