套接字 IO 重新连接
Socket IO reconnect?
disconnect
后如何重新连接到套接字io?
这是代码
function initSocket(__bool){
if(__bool == true){
socket = io.connect('http://xxx.xxx.xxx.xxx:8081', {secure:false});
socket.on('connect', function(){console.log('connected')});
socket.on('disconnect', function (){console.log('disconnected')});
}else{
socket.disconnect();
socket = null;
}
}
如果我这样做initSocket(true)
,它就可以了。如果我这样做initSocket(false)
,它会断开连接。但是,如果我尝试使用initSocket(true)
重新连接,则连接不再有效。如何使连接正常工作?
好吧,你在这里有一个选择...
第一次初始化套接字值时,应使用 io.connect
连接,
下次(在你调用断开连接一次之后),你应该用socket.socket.connect()
连接回来。
所以你的initSocket
,应该是这样的
function initSocket(__bool){
if(__bool){
if ( !socket ) {
socket = io.connect('http://xxx.xxx.xxx.xxx:8081', {secure:false});
socket.on('connect', function(){console.log('connected')});
socket.on('disconnect', function (){console.log('disconnected')});
} else {
socket.socket.connect(); // Yep, socket.socket ( 2 times )
}
}else{
socket.disconnect();
// socket = null; <<< We don't need this anymore
}
}
你已经有了答案,但我来到这里是因为插座。IO 客户端重新连接功能目前在节点中已损坏。
GitHub存储库上的活动错误显示,很多人在连接失败时没有收到事件,并且重新连接不会自动发生。
要解决此问题,您可以创建手动重新连接循环,如下所示:
var socketClient = socketioClient.connect(socketHost)
var tryReconnect = function(){
if (socketClient.socket.connected === false &&
socketClient.socket.connecting === false) {
// use a connect() or reconnect() here if you want
socketClient.socket.connect()
}
}
var intervalID = setInterval(tryReconnect, 2000)
socketClient.on('connect', function () {
// once client connects, clear the reconnection interval function
clearInterval(intervalID)
//... do other stuff
})
您可以通过以下客户端配置重新连接。
// 0.9 socket.io version
io.connect(SERVER_IP,{'force new connection':true });
// 1.0 socket.io version
io.connect(SERVER_IP,{'forceNew':true });
这是一个古老的问题,但我最近一直在为此苦苦挣扎,并在这里跌跌撞撞。最新版本的 socket.io (>2.0) 不再具有 socket.socket
属性,如此处所述。
我正在使用socket.io-client 2.2.0
,我遇到了套接字似乎已连接(属性socket.connected = true
)的情况,但它没有与服务器通信。
因此,为了解决这个问题,我的解决方案是调用socket.close()
和socket.open
。这些命令强制断开连接并建立新连接。
我在重新连接套接字时遇到了问题。也许这种情况会帮助某人。我有这样的代码:
var io = require('socket.io').listen(8080);
DB.connect(function () {
io.sockets.on('connection', function (socket) {
initSockets(socket);
});
});
这是错误的,以防打开端口分配的回调之间存在延迟。在 DB 初始化之前,某些消息可能会丢失。修复它的正确方法是:
var io = null;
DB.connect(function () {
io = require('socket.io').listen(8080);
io.sockets.on('connection', function (socket) {
console.log("On connection");
initSockets(socket);
});
});
- 当客户端在JW Player中恢复丢失的连接时,会自动重新连接
- PeerJS自动重新连接
- Node.js REST与MySQL句柄重新连接
- Socket.IO socket.id 更改同一客户端而不重新连接
- 如何在自动重新连接超时后重新连接socket.io客户端
- Socket.IO:重新连接导致服务器连接代码运行两次
- node.js/socket.io:重新连接时刷新表
- Socket.io :断开连接后重新连接时如何执行某些操作
- 断开并手动重新连接 Socket.IO
- Socket.io 数据包在断开连接和重新连接之间丢失
- 套接字 IO 重新连接
- 为什么客户端在节点+快递+socket.io+翡翠简单应用中断开连接再重新连接
- Socket.io检测是否正在重新连接或完全断开连接
- socket.io事件重新连接超时
- 如何将socket.io中返回的客户端(网页)重新连接到以前启动的后端进程
- 套接字.IO重新连接socket.socket.connect不工作
- 套接字.IO授权失败不会重试重新连接
- 如何断开 socket.io 与客户端的连接并重新连接
- socket.io 知道何时达到最大重新连接尝试次数限制
- 套接字.IO重新连接断开