WebSocket 재연결 전략 정리
실시간 서비스에서 연결이 끊겼을 때 무작정 즉시 재연결하면 서버에 부하가 몰립니다. 지수 백오프(exponential backoff)로 간격을 늘려가며 재시도하는 편이 안전합니다.
function reconnect(attempt = 0) {
const delay = Math.min(1000 * 2 ** attempt, 30_000);
setTimeout(() => {
const ws = new WebSocket(URL);
ws.onopen = () => { attempt = 0; };
ws.onclose = () => reconnect(attempt + 1);
}, delay);
}
지터(jitter)를 추가하면 다수 클라이언트가 동시에 재연결하는 것을 분산할 수 있습니다.