일반적으로 이것은 중요하지 않으며 내 상황에 너무 중요하지 않을 수도 있습니다. 그러나이를 구현하는 합리적인 방법이 있는지 알고 싶습니다.페이지 언로드 전에 코드가 항상 호출되도록하는 방법
내 페이지가 자동으로 웹 소켓 연결을 엽니 다. 더 나은 클라이언트가되기 위해서는 클라이언트가 자체적으로 정리하고 페이지가 언로드되기 전에 websocket을 닫고 싶습니다.
페이지가로드 될 때 브라우저가 나를 위해 close()
을 호출 할 수있는 예지력을 가졌지 만, 그렇지 않은 경우 브라우저에서 onbeforeunload
메시지 (일부 등)를 활용하여 어떻게 "최종 정리 "(C에서 atexit()
과 다르지 않음)?
어떤 이유로 든 내 클라이언트가 내 websocket 서버에 "exiting"메시지를 보내길 원한다고 가정 해 봅시다. 실제로 페이지를 언로드에 socket.onclose 콜백 화재 이전
$(window).on('beforeunload', function() {
websocket.close(); // websocket is a WebSocket
});
을하지만 (그것이?) close()
실제로 비동기 호출 가정하자 나는 에 있는지 확인합니다 :
지금은이 작업을 수행 할 수 있습니다 ! 이 작업을 수행 할 수 있습니까?
서버를 제어하는 경우 n 분마다 클라이언트 측 하트 비트를 요구할 수 있습니다. 하트 비트가 서버에 수신되지 않으면 서버는 소켓이 닫혀 브라우저가 고갈 된 클라이언트 소켓을 정리합니다 약. – jfriend00
@ jfriend00이 문제를 해결할 수있는 가장 좋은 방법 인 것 같습니다. 'onbeforeunload' 내부에있는'close()'가 트릭을하고있는 것처럼 보입니다. –
나는 모든 브라우저에서 작동하는'close()'를 기대할 수는 없다고 생각하지만, 거기에 해를 입히는 데 아무런 해가 없다. 하트 비트는 창 폐쇄를 알리는 브라우저 버그를 포함한 모든 경우를 포함합니다. – jfriend00