сокет io испускает неудачный обратный вызов

Есть ли какой-нибудь способ узнать, что сокет io посылает неудачу и успех, что-то вроде методов обратного вызова ajax: onSuccess, onError? Для сокета io emit я нахожу только:

socket.emit('опубликовать', {сообщение:'тестовое сообщение'},функция (данные) { предупреждение("")})

Этот обратный вызов вызывается только тогда, когда сервер отправляет ответ подтверждения. Но он не может применяться в этой ситуации:

В момент отправки сообщения на сервер существует плохая сеть или потерянное соединение, что означает, что сервер не получает это сообщение, поэтому функция обратного вызова клиента не вызывается.

Я хочу:

Когда я вызываю сокет io emit, если он не работает, я хочу повторить попытку 3 раза.


person fcbflying    schedule 25.12.2015    source источник
comment
Если вы хотите имитировать поведение HTTP, вам придется написать этот механизм самостоятельно, поскольку он не является частью работы веб-сокета. Но это можно сделать довольно легко с помощью setTimeout и нескольких флагов.   -  person Maria    schedule 10.02.2018
comment
Вы пытались использовать обратный вызов события «ошибка»?   -  person BhaskerYadav    schedule 12.11.2018


Ответы (1)


Я знаю, что это старый пост, но на всякий случай у кого-то все еще есть проблемы с этим.

var socket = new io.connect('http://localhost:3000', {
    'reconnection': true,
    'reconnectionDelay': 1000,
    'reconnectionDelayMax' : 5000,
    'reconnectionAttempts': 3
});
socket.on('connect_error', function() {
    console.log('Connection failed');
});
socket.on('reconnect_failed', function() {
    // fired only after the 3 attemps in this example fail
    console.log('Reconnection failed');
});

Подробнее здесь -> https://socket.io/docs/client-api/#manager-reconnectionAttempts-value

person Ryan Soderberg    schedule 07.06.2020