我正在使用Socket.io,我想知道从客户端连接到服务器的状态。
这样的事情:
socket.status // return true if connected, false otherwise
如果连接断开或因任何原因断开连接,我需要此信息给用户提供视觉反馈。
答案 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
时,它就是假的。
不确定这是一个错误还是故意的。