close(code, reason)
ws.close() 를 호출하면 종료 핸드셰이크가 시작돼. 브라우저가 닫기 프레임을 보내고 서버도 닫기 프레임으로 답한 뒤, 아래의 TCP 소켓이 닫히지. 닫기 코드와 이유는 선택해서 전달할 수 있어. 이유는 최대 123바이트인 UTF-8 문자열이라 ‘세션 만료’ 같은 설명에는 충분하면서도 닫기 프레임을 가볍게 유지해.
애플리케이션 닫기 코드(4000-4999)
4000~4999 는 애플리케이션이 정의하는 코드 영역이야. 프로토콜에서 4001 unauthorized, 4029 too many connections, 4040 room not found 처럼 안정적인 값을 정해 두면 클라이언트가 상황별로 명확히 분기할 수 있어. 1001 이나 1011 같은 1xxx 코드는 RFC 가 이미 의미를 정했으니 애플리케이션 로직에 재사용하지 않는 게 좋아.
wasClean 이 종료 상태를 알려 줘
close 이벤트에는 wasClean 불리언 값이 있어. true 라면 종료 핸드셰이크를 제대로 마쳤으므로 닫기 코드에 의미가 있어. false 라면 연결이 갑자기 끊긴 것으로, 코드는 보통 1006 이고 이유는 비어 있어.