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

socket.io client - emit callback does not fire if no connection or server is down

本文关键字:回调 客户端 io 如果没有 连接 服务器 socket      更新时间:2023-09-26

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

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

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

感谢您的帮助。

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 套接字,并且 Web 套接字建立活动连接,因此每当连接丢失时,套接字都会立即断开连接并触发此回调。

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

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