获取Socket.io客户端上的连接状态

时间:2013-05-13 08:55:07

标签: node.js socket.io

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

这样的事情:

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

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

5 个答案:

答案 0 :(得分:104)

您可以查看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个事件并自行跟踪状态。

答案 1 :(得分:6)

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

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

希望它会对你有所帮助。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

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

socket.on('reconnect', ()=>{
  //Your Code Here
});

答案 4 :(得分:0)

@ robertklep检查socket.connected的答案是正确的,除了重新连接事件https://socket.io/docs/client-api/#event-reconnect 正如文件所述,它“在成功重新连接时被解雇”。但是当你检查socket.connected时,它就是假的。

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