【问题标题】:socket.io client - emit callback does not fire if no connection or server is downsocket.io 客户端 - 如果没有连接或服务器关闭,则不会触发发出回调
【发布时间】:2013-11-22 15:00:57
【问题描述】:

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

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

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

感谢您的帮助。

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 });
    }
}); 

【问题讨论】:

    标签: javascript sockets socket.io client


    【解决方案1】:

    您是否尝试过使用 socket.on('disconnect', ...) 回调?根据socket.io 文档,这是检测客户端已断开连接的方法。由于socket.io使用web sockets,web sockets建立一个活跃的连接,每当连接丢失,socket立即断开,并触发此回调。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-10-09
        • 2013-03-14
        • 2016-05-13
        • 2019-07-04
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        相关资源
        最近更新 更多