83

我正在使用 Socket.io,我想知道从客户端连接到服务器的状态。

像这样的东西:

socket.status // return true if connected, false otherwise

如果连接断开或由于任何原因断开连接,我需要此信息向用户提供视觉反馈。

4

5 回答 5

136

您可以检查该socket.connected属性:

var socket = io.connect();
console.log('check 1', socket.connected);
socket.on('connect', function() {
  console.log('check 2', socket.connected);
});

它是动态更新的,如果连接丢失,它将被设置为false直到客户端再次拿起连接。很容易检查setInterval或类似的东西。

另一种解决方案是自己捕获disconnect事件并跟踪状态。

于 2013-05-13T09:40:18.157 回答
9

您可以使用此功能检查连接是否丢失:-

var socket = io( /**connection**/ );
socket.on('disconnect', function(){
//Your Code Here
});

希望它会帮助你。

于 2017-01-27T14:09:34.527 回答
8

这些天, socket.on('connect', ...) 对我不起作用。我使用下面的代码在第一次连接时检查。

if (socket.connected)
  console.log('socket.io is connected.')

并在重新连接时使用此代码。

socket.on('reconnect', ()=>{
  //Your Code Here
});
于 2019-01-29T09:30:29.020 回答
3

自己跟踪连接状态。带布尔值。将其设置false为声明时。使用各种事件(连接、断开连接、重新连接等)重新分配当前布尔值。注意:使用未记录的 API 功能(例如socket.connected)不是一个好主意;该功能可能会在后续版本中被删除,而无需提及删除。

于 2018-03-18T17:27:31.593 回答
2

@robertklep 检查 socket.connected 的答案是正确的,除了重新连接事件,https: //socket.io/docs/client-api/#event-reconnect 正如文档所说,它是“在成功重新连接时触发”。但是当您检查时,socket.connected它是错误的。

不确定这是错误还是故意的。

于 2018-06-07T04:30:49.100 回答