Задать вопрос
@viktorross

Почему в Safari обрывается соединение с websocket'ом?

У меня есть подключение к сокету:

var conn = new WebSocket('wss://site.com:8443?token={/literal}{$token}{literal}');

Все настроено, все работает, демон на сервере держит соединение всегда, причина точно не в настройках.

Захожу с телефона именно через сафари, стоит заблокировать экран или подождать пару минут без действий и сокет не работает, обновляю страницу, все ок, пока снова не выключить экран. Заметил, что не только у меня так на сайте через сафари, у некоторых появляется что-то типа "ожидайте, идет переподключение".

Как решить эту проблему?
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 1
dedalik
@dedalik
Веб разработчик
Используйте автоматическое переподключение WebSocket

function createWebSocket() {
    const ws = new WebSocket('wss://...');

    ws.onopen = function () {
        console.log('WebSocket connection opened');
    };

    ws.onmessage = function (message) {
        console.log('Received message:', message.data);
    };

    ws.onclose = function (event) {
        console.log('WebSocket connection closed. Reconnecting...');
        // Автоматическое переподключение через 1 секунду
        setTimeout(createWebSocket, 1000);
    };

    ws.onerror = function (error) {
        console.log('WebSocket error:', error);
        ws.close();
    };
}

createWebSocket();


Так же можно ещё пинговать сервер Keep-Alive, но тут переподключения будет достаточно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы