๐จ
SSE (Server-Sent Events)
์๋ฒโํด๋ผ์ด์ธํธ ๋จ๋ฐฉํฅ ์คํธ๋ฆผ
SSE๋ HTTP ๊ธฐ๋ฐ์ ๋จ๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ ๊ธฐ์ ์ ๋๋ค. ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด๋ฒคํธ๋ฅผ ๊ณ์ ๋ณด๋ผ ์ ์์ง๋ง, ํด๋ผ์ด์ธํธโ์๋ฒ ๋ฐฉํฅ์ ๋ณ๋ HTTP ์์ฒญ์ด ํ์ํฉ๋๋ค. WebSocket๋ณด๋ค ๋จ์ํ๊ณ HTTP/2์ ์ ํธํ๋๋ฉฐ, ์๋ ์ฌ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ด ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋์ด ์์ต๋๋ค.
๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ
๐
Client
EventSource API
โ GET ์์ฒญ
→
HTTP ์ฐ๊ฒฐ ์ ์ง
←
โก text/event-stream
←
data: {...}
←
data: {...}
๋จ๋ฐฉํฅ ์คํธ๋ฆผ (์๋ฒ → ํด๋ผ์ด์ธํธ)
๐ฅ๏ธ
Server
Content-Type: text/event-stream
์ฐ๊ฒฐ ๋๊น ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์ฌ์ฐ๊ฒฐ (Last-Event-ID ์ ์ก)
ํ๋ฆ ์ค๋ช
- ํด๋ผ์ด์ธํธ๊ฐ EventSource API๋ก ์๋ฒ์ HTTP GET ์์ฒญ
- ์๋ฒ๊ฐ text/event-stream ์๋ต, ์ฐ๊ฒฐ ์ ์ง
- ์๋ฒ๊ฐ ์ด๋ฒคํธ๋ฅผ
data:ํ์์ผ๋ก ์คํธ๋ฆฌ๋ฐ - ์ฐ๊ฒฐ ๋๊น ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์ฌ์ฐ๊ฒฐ
๋์ ํ๋ฆ
1
ํด๋ผ์ด์ธํธ๊ฐ EventSource API๋ก ์๋ฒ์ HTTP GET ์์ฒญ
2
์๋ฒ๊ฐ Content-Type: text/event-stream์ผ๋ก ์๋ต, ์ฐ๊ฒฐ ์ ์ง
3
์๋ฒ๊ฐ ์ด๋ฒคํธ ๋ฐ์ ์ data: ํ์์ผ๋ก ์คํธ๋ฆฌ๋ฐ ์ ์ก
4
์ฐ๊ฒฐ ๋๊น ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์ฌ์ฐ๊ฒฐ (Last-Event-ID ํ์ฉ)
์ฅ์
- ✓ HTTP ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ ๋จ์
- ✓ ์๋ ์ฌ์ฐ๊ฒฐ ๋ด์ฅ
- ✓ HTTP/2 ๋ฉํฐํ๋ ์ฑ ํ์ฉ
- ✓ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฒ๊น ์ฉ์ด
๋จ์
- ✗ ๋จ๋ฐฉํฅ๋ง ๊ฐ๋ฅ (์๋ฒโํด๋ผ์ด์ธํธ)
- ✗ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก ๋นํจ์จ
- ✗ IE/๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฏธ์ง์
- ✗ ์ต๋ ๋์ ์ฐ๊ฒฐ ์ ์ ํ (HTTP/1.1์์ 6๊ฐ)
์ฌ์ฉ ์ฌ๋ก
์ค์๊ฐ ์๋ฆผ/ํผ๋
AI ์ฑ๋ด ์คํธ๋ฆฌ๋ฐ ์๋ต (ChatGPT)
์ฃผ์ ์์ธ ์
๋ฐ์ดํธ
๋น๋/๋ฐฐํฌ ๋ก๊ทธ ์คํธ๋ฆฌ๋ฐ
๋ผ์ด๋ธ ์ค์ฝ์ด๋ณด๋