WebSocket 은 auto-reconnect 안 해
EventSource 와 달리 네이티브 브라우저 WebSocket 은 connection 끊겨도 재연결 안 해. 의도적이야: 재연결 정책은 application 마다 달라 — chat 은 공격적, one-shot streaming export 는 안 함. protocol 이 안 끼어들어.
Exponential backoff with jitter
업계 표준은 exponential backoff with jitter. 실패 후 min(base * 2^retry, cap) 초 기다리고, ±25% 의 randomized jitter 더해 — 10,000 클라가 동시에 재연결할 때 회복 중 서버에 lockstep 으로 떼지어 들이대지 않게 ('thundering herd'). 다음 성공 open 마다 retry 카운터 reset.
Close 1000 엔 skip
깨끗한 close (code 1000) 엔 재연결 하지 마 — application 이 요청한 거. 1001, 1006, 1011, 그리고 대부분 4xxx code 엔 재연결. 4001 (auth expired) 엔 무지성 재연결 대신 재인증 prompt 띄워.