피드로 돌아가기
Why your AI chat reconnects but your session doesn't
Dev.toDev.to
Infrastructure

WebSocket Transport와 Session State 분리를 통한 AI Chat 중단 없는 세션 복구 설계

Why your AI chat reconnects but your session doesn't

Maddy Quinn2026년 5월 27일9intermediate

Context

AI Chat 서비스에서 WebSocket 도입 시 Transport 계층의 재연결 로직만으로는 세션 상태 복구가 불가능한 한계 존재. AWS ALB(60s) 및 Cloudflare(100s) 등 인프라 타임아웃으로 인한 연결 단절 시, In-flight 토큰과 Tool call 결과 등 세션 컨텍스트가 소실되는 문제 발생.

Technical Solution

  • Bidirectional 통신 및 실시간 제어를 위해 SSE 대신 WebSocket 프로토콜 채택
  • Transport 계층과 독립된 Session Layer를 구축하여 세션 ID 기반의 대화 상태 유지
  • 25초 간격의 Heartbeat Ping 전송을 통한 Proxy 타임아웃(60s~100s) 선제적 방지
  • 메시지별 Serial Number 부여를 통해 재연결 시 단절 지점부터의 정확한 데이터 Fetch 구현
  • Ephemeral History 버퍼링을 통한 Reconnect 시점의 누락 메시지 순차적 Replay 메커니즘 적용
  • Sequence Number 및 Idempotency Key 도입을 통한 재연결 시 메시지 중복 생성 방지

1. 인프라(ALB, Nginx, Cloudflare)의 Idle Timeout 설정을 확인하고 그보다 짧은 주기의 Heartbeat 주기 설정

2. 단순 Socket Reconnect가 아닌, 세션 ID 기반의 상태 복구 로직 및 메시지 시퀀스 번호 도입 검토

3. Mobile Handoff 및 Page Reload 상황을 가정한 State Persistence 전략 수립

원문 읽기