WebSocket - можно ли запускать пользовательскую функцию onclose при закрытии окна? - PullRequest
0 голосов
/ 04 марта 2019

В JavaScript я создаю экземпляр WebSocket следующим образом:

var webSocket = new WebSocket('wss://example.com:8081');
webSocket.onclose = function () {
    // Custom function
}

Однако выполняется ли код внутри моей пользовательской функции onclose, если пользователь закрывает окно браузера или выходит из браузера?Я попытался разместить там вызов Ajax и функцию webSocket.send (), но ни один из них не запустился успешно.

Если onclose не запускается, когда окно закрывается или пользователь закрывает свой браузер, что будетлучший способ запустить пользовательский код на сервере, когда пользователь отключается?Мое лучшее предположение сейчас заключается в том, что код должен выполняться со стороны сервера - иными словами, работающему серверу WebSocket (в моем случае написанному на php) требуется собственный код во внутреннем методе onClose.

1 Ответ

0 голосов
/ 04 марта 2019

onclose срабатывает при закрытии сокетного соединения, что не обязательно при закрытии вашего окна или браузера.Теоретически, когда другое окно с закрытым сокетом, оно должно сработать, но оно не сработает, если это собственное окно.

Я бы посоветовал добавить прослушиватель событий для beforeunload, ссылка ниже, которая срабатывает, когда страница и ее ресурсыбыть выгруженным

https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

Пример

window.addEventListener("beforeunload", function (event) {

});

Кроме того, onunload может быть полезным событием для прослушивания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...