wasClean의 함정 — WebSocket 야간 유실과 close code별 재연결·로그아웃 정책

야간에 WebSocket 한 개가 조용히 사라집니다. 서버 로그엔 에러가 없고 클라이언트 에러 로그에도 흔적이 없습니다. 원인은 클라이언트의 onclose 핸들러가 wasClean === true면 무조건 정상 종료로 가정하기 때문. 서버가 WS_1011로 닫아도 핸드셰이크만 정상이면 wasClean=true가 떨어집니다. close code별 재연결/로그아웃 정책과 인스턴스 가드 패턴을 정리합니다.