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

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

最佳答案

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

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

关于javascript - socket.io 客户端 - 如果没有连接或服务器关闭,则不会触发回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895696/

相关文章:

javascript - 为什么用 Ajax 响应替换页面内容时不应用 jQuery 插件?

javascript - 使用 Javascript 发送电子邮件

node.js - 如何禁用 socket.io 上的五个连接限制?

javascript - 使用 lodash 从数组返回对象属性

c# - 将 Socket.ReceiveAsync 替换为 NetworkStream.ReadAsync(可等待)

java - HttpClient 4 静静地卡在 socketRead 上

sockets - sslscan.c :94:25: fatal error: openssl/err. h : No such file or directory compilation terminated. #163

javascript - 如何使用需要套接字连接的中间件?

ajax - WebSockets(或 AJAX 长轮询等)能否在与原始 HTTP 请求不同的端口上运行?

javascript - Meteor 将 _proto_ 添加到数组中