如何在自动重新连接超时后重新连接socket.io客户端
How to reconnect socket.io client on activity after auto-reconnect times out?
笔记本电脑入睡是很常见的。这会导致socket.io客户端断开连接。当用户返回到web应用程序时,socket.io客户端不会尝试重新连接(可能达到了重新连接限制?)。如果用户执行了一些操作,我如何告诉套接字重新连接?
例如,我希望emit
函数检查连接是否处于活动状态,如果不是,则尝试重新连接。
注意:我只需要客户端JS代码,不使用node.JS.
在版本0.9中,您可以尝试将connect-options对象设置为一些激进的设置:
var main = io.connect('/', {
'reconnection delay': 100, // defaults to 500
'reconnection limit': 100, // defaults to Infinity
'max reconnection attempts': Infinity // defaults to 10
});
请注意,max reconnection attemps
并不意味着io客户端将在10次尝试失败后停止重新连接服务器。如果它能够重新连接到服务器10次,但第11次断开连接,它将停止重新连接。
请参阅Socket.IO配置
Socket实例有一个内部的"Socket"属性,该属性又有一个可以调用的connect()方法。它通常在实例化对象时自动调用(由"自动连接"选项控制)。内部套接字还有一个布尔"connected"属性,如果你不确定状态是什么,你可以检查它
sio = io.connect();
//... time passes ...
if (! sio.socket.connected) {
sio.connect();
}
connect()方法进行检查以确保套接字没有处于尝试连接的中间,尽管出于某种原因,它没有检查套接字是否已经连接。不确定如果连接()一个已经连接的套接字会发生什么。。。
客户端库的源代码相当清晰,注释也很好,这很好,因为github上的README没有提供太多帮助。在进行开发时,使用该库的未缩小版本非常方便,这样您就可以深入了解源代码。
您可以尝试使用connect.failed
事件:
socket.on('connect_failed', function () {
/* Insert code to reestablish connection. */
});
您可以运行setInterval来检查连接状态,如
s.connect()
if (! s.socket.connected) {
s.connect();
相关文章:
- 当客户端在JW Player中恢复丢失的连接时,会自动重新连接
- PeerJS自动重新连接
- Node.js REST与MySQL句柄重新连接
- Socket.IO socket.id 更改同一客户端而不重新连接
- 设置流星重新连接时间
- 如何通过重新连接实现共享重播
- 重新连接具有共享RxJS observable的WebSocket
- 如何在自动重新连接超时后重新连接socket.io客户端
- Socket.IO:重新连接导致服务器连接代码运行两次
- node.js/socket.io:重新连接时刷新表
- Socket.io :断开连接后重新连接时如何执行某些操作
- 断开并手动重新连接 Socket.IO
- Socket.io 数据包在断开连接和重新连接之间丢失
- 为什么客户端在节点+快递+socket.io+翡翠简单应用中断开连接再重新连接
- Socket.io检测是否正在重新连接或完全断开连接
- socket.io事件重新连接超时
- 如何将socket.io中返回的客户端(网页)重新连接到以前启动的后端进程
- 套接字.IO重新连接socket.socket.connect不工作
- 如何断开 socket.io 与客户端的连接并重新连接
- socket.io 知道何时达到最大重新连接尝试次数限制