πŸ”Œ

WebSocket

μ–‘λ°©ν–₯ μ‹€μ‹œκ°„ 톡신

WebSocket은 RFC 6455둜 μ •μ˜λœ ν”„λ‘œν† μ½œλ‘œ, 졜초 HTTP ν•Έλ“œμ…°μ΄ν¬ 이후 TCP 연결을 μœ μ§€ν•˜λ©° μ–‘λ°©ν–₯ 톡신을 μ§€μ›ν•©λ‹ˆλ‹€. μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ— λ¨Όμ € 데이터λ₯Ό 보낼 수 μžˆμ–΄ μ‹€μ‹œκ°„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•©λ‹ˆλ‹€.

ꡬ쑰 λ‹€μ΄μ–΄κ·Έλž¨

🌐
Client
Browser / Bot / App
β‘  HTTP Upgrade
β‘‘ 101 Switching
TCP μœ μ§€
β‘’ μ–‘λ°©ν–₯ λ©”μ‹œμ§€
β‘£ Close ν”„λ ˆμž„
πŸ–₯️
Server
WebSocket Server
흐름 μ„€λͺ…
  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ HTTP Upgrade μš”μ²­μœΌλ‘œ ν•Έλ“œμ…°μ΄ν¬ μ‹œμž‘
  2. μ„œλ²„κ°€ 101 Switching Protocols 응닡, TCP μ—°κ²° μœ μ§€
  3. μ–‘λ°©ν–₯ 채널 β€” μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λ‘ 자유둭게 λ©”μ‹œμ§€ 전솑
  4. μ–΄λŠ μͺ½μ΄λ“  Close ν”„λ ˆμž„μœΌλ‘œ μ—°κ²° μ’…λ£Œ
ν™œμš© 예: Slack Socket Mode, Discord Gateway, μ‹€μ‹œκ°„ μ±„νŒ…, κ²Œμž„

λ™μž‘ 흐름

1

ν΄λΌμ΄μ–ΈνŠΈκ°€ HTTP Upgrade μš”μ²­μœΌλ‘œ WebSocket ν•Έλ“œμ…°μ΄ν¬ μ‹œμž‘

2

μ„œλ²„κ°€ 101 Switching Protocols둜 응닡, TCP μ—°κ²° μœ μ§€

3

μ–‘λ°©ν–₯ 채널 확립 β€” μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λ‘ 자유둭게 λ©”μ‹œμ§€ 전솑

4

μ–΄λŠ μͺ½μ΄λ“  Close ν”„λ ˆμž„μ„ 보내 μ—°κ²° μ’…λ£Œ

μž₯점

  • μ§„μ •ν•œ μ–‘λ°©ν–₯ μ‹€μ‹œκ°„ 톡신
  • μ„œλ²„κ°€ λ¨Όμ € 데이터 push κ°€λŠ₯
  • HTTP μ˜€λ²„ν—€λ“œ 없이 κ²½λŸ‰ ν”„λ ˆμž„
  • λ°©ν™”λ²½ λ’€μ—μ„œλ„ μ•„μ›ƒλ°”μš΄λ“œ μ—°κ²°λ‘œ λ™μž‘

단점

  • μ—°κ²° μœ μ§€ λΉ„μš© (μ„œλ²„ λ©”λͺ¨λ¦¬/컀λ„₯μ…˜)
  • μ—°κ²° λŠκΉ€ μ‹œ μž¬μ—°κ²° 둜직 ν•„μš”
  • λ‘œλ“œλ°ΈλŸ°μ„œ μ„€μ • 볡작
  • HTTP 캐싱 λΆˆκ°€

μ‚¬μš© 사둀

μ±„νŒ… μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€μ‹œκ°„ λŒ€μ‹œλ³΄λ“œ/λͺ¨λ‹ˆν„°λ§ 온라인 κ²Œμž„ ν˜‘μ—… 에디터 (Google Docs)