2016-07-23 7 views
3

Нам необходимо обновить интерфейс клиентской стороны, чтобы указать, что сообщение не удается выполнить. Как я могу обратиться к Socket.IO JS-клиенту непосредственно после того, как сообщение не удалось выполнить? Например, что-то вроде:Обнаружение ошибки доставки сообщения Socket.IO на стороне клиента

socket.emit("event", data).onError(myCallback); 

Я знаю, что Socket.IO предоставляет механизм Ack для подтверждения успеха доставки. Таким образом, можно настроить таймер с помощью обработчика, который вызывает обратный вызов сбоя, если ack не вызывается через определенное время. Но это не лучший способ сделать.

Также есть событие ошибки, предоставляемое Socket.IO, но в нем нет информации о том, какая ошибка вызвала ошибку.

ответ

1

К сожалению, нет никакого способа, чтобы получить ошибки из обратных вызовов, единственный способ, чтобы действительно создать свой собственный тайм-аут:

var timeoutId = setTimeout(timeoutErrorFn, 500); 

var acknCallbackFn = function(err, userData){ 
    clearTimeout(timeoutId) 
    //manage UserData 
} 

socket.emit('getUserData', acknCallbackFn); 

Source of the code

И есть еще один вопрос об этом, open

Так пока вы должны придерживаться своего руководства setTimeout.

Смежные вопросы