WebSocketDisconnect 가 종료 신호야
클라이언트가 정상적으로 닫았든 갑자기 끊겼든, 다음 receive_* 호출에서 WebSocketDisconnect 예외가 발생해. 예외의 .code 에는 닫기 코드, .reason 에는 닫기 프레임의 이유가 들어 있어. 세션이 끝났음을 알려 주는 단일 기준이야.
정리 작업은 finally 블록에서
연결할 때 준비한 모든 것, 즉 연결 관리자 등록, 심박 작업, 열린 DB 행을 여기서 정리해야 해. 흐름은 연결 → 등록 → try 안의 반복과 예외 처리 → 등록 해제야. 등록 해제를 건너뛰면 고아 참조가 남고, 규모가 커질 때 WebSocket 서버의 메모리 누수로 이어져.
다른 예외도 발생해
메시지 처리기의 애플리케이션 버그가 별도 예외를 던질 수도 있어. 이 경우를 따로 잡아 클라이언트에 구조화된 오류를 보내고 연결을 깔끔하게 닫아.