socket.io client - 如果没有连接或服务器关闭,则不会触发emit回调

时间:2013-11-10 21:53:05

标签: javascript sockets socket.io client

我正在尝试在客户端添加一些验证,以确保邮件已正确发送到服务器。

如果服务器出现故障,则回拨函数不会触发,我无法告诉我的客户端邮件是否正确传递。如果我的客户端(移动客户端)丢失信号,也会发生同样的事情。

如何在客户端处理连接错误?

感谢您的帮助。

socket.emit('send', JSON.stringify(msg), function (res) {
    if(res)  { 
        $messages.unshift(msg); 
    }
    else { 
      $scope.$emit('triggerError',  { message: 'Unable to send your message.', temp: true });
    }
}); 

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用socket.on('disconnect',...)回调?根据{{​​3}}文档,这是检测客户端已断开连接的方法。由于socket.io使用Web套接字,并且Web套接字建立了活动连接,因此每当连接丢失时,套接字立即断开连接并触发此回调。

我在我的项目中使用它并且它有效。我从来没有尝试过在客户端使用它,但它可能也有效。

答案 1 :(得分:0)

为此目的有几个事件。 您可以绑定'错误' - 如果发生某些错误,您将触发此事件。 您可以在'disconnect'上绑定 - 您可以检测到与服务器的断开连接。