Есть код, который устанавливает websocket соединение. При вызове функции closeConnection соединение должны быть закрыто, а по событию onclose снова открыто.
У большинства пользователей событие onclose работает мгновенно, но на некоторых компьютерах onclose вызывается через минуты. У всех стоит последняя версия браузера и стабильный интернет, все пользователи находятся в одной сети.
На сервере сообщение о закрытии соединения так же приходят с большой задержкой.
В чем может быть причина?
Примера кода:
let socket = null;
startConnection();
function startConnection() {
socket = new WebSocket("ws://example.com");
socket.onopen = function (e) {
console.log("[open] Соединение установлено");
console.log("Отправляем данные на сервер");
socket.send('Тестовое сообщение');
};
socket.onmessage = function (event) {
console.log(`[message] Данные получены с сервера: ${event.data}`);
};
socket.onclose = function (event) {
socket = null;
console.log('Пытаемя установить новое соединение!');
startConnection();
};
socket.onerror = function (error) {
console.log(`[error]`);
};
}
function closeConnection() {
console.log(`start close`);
socket.close();
}