socket.io 'connect' 或 'reconnect' 事件在重新连接后未触发
socket.io 'connect' or 'reconnect' event not fired after reconnect
我在使用 Socket.io 时遇到问题。
代码很简单:
var socket = null;
var socketInit = false; //if it is true, use reconnect
...
function connect() {
if(!socketInit) {
socket = io();
socketInit = true;
//attach event handlers
socket.on('connect', function() {
console.log('connect fired!');
});
socket.on('disconnect', function() {
console.log('disconnect fired!');
});
socket.on('reconnect', function() {
console.log('reconnect fired!');
});
}
else {
socket.io.connect();
}
}
...
function disconnect() {
socket.disconnect();
}
如您所见,有两个函数可以连接或断开套接字。在连接函数中,它将 'connect'、'disconnect'、'reconnect' 处理程序附加到套接字。
首先我调用了连接函数,它运行良好。服务器端也运行良好。我调用了断开连接功能,作为服务器也能很好地工作。
但我再次调用了连接函数,这意味着 "socketInit" 变量为真,因此连接函数尝试:
socket.io.connect();
我检查了服务器和客户端控制台,看起来已经连接,但问题是事件没有触发!
服务器端 'connection' 事件在重新连接时触发,但客户端 'connect' 或 'reconnect' 事件未触发。我试图弄清楚发生了什么,但我还是不明白。我多次检查网络控制台和服务器控制台,连接本身工作正常,但问题是事件不工作!
如果有人知道方法,将不胜感激帮助我。谢谢 ;)
p.s。我尝试添加 'reconnected'、'reconnection'、'reconnect_error' 事件处理程序,但都不起作用。
如果您使用的是 Socket.io 1.0,请尝试使用套接字上的 io 管理器来处理手动断开和重新连接。
var socket = null;
var socketInit = false;
function connect() {
if(!socketInit) {
socket = io();
socketInit = true;
//attach event handlers
socket.on('connect', function() {
console.log('connect fired!');
});
socket.on('disconnect', function() {
console.log('disconnect fired!');
});
socket.on('reconnect', function() {
console.log('reconnect fired!');
});
}
else {
socket.io.reconnect();
}
}
function disconnect() {
socket.io.disconnect();
}
套接字上的reconnecting_attempt、reconnecting、reconnected 和connected 事件应该都在之后发出。
我正在使用 socket.io 2.1.1,这里是 socket.io 断开连接后处理重新连接的所有事件序列:
就这样socketClient.on(eventName, callBackFunc);
我在使用 Socket.io 时遇到问题。
代码很简单:
var socket = null;
var socketInit = false; //if it is true, use reconnect
...
function connect() {
if(!socketInit) {
socket = io();
socketInit = true;
//attach event handlers
socket.on('connect', function() {
console.log('connect fired!');
});
socket.on('disconnect', function() {
console.log('disconnect fired!');
});
socket.on('reconnect', function() {
console.log('reconnect fired!');
});
}
else {
socket.io.connect();
}
}
...
function disconnect() {
socket.disconnect();
}
如您所见,有两个函数可以连接或断开套接字。在连接函数中,它将 'connect'、'disconnect'、'reconnect' 处理程序附加到套接字。
首先我调用了连接函数,它运行良好。服务器端也运行良好。我调用了断开连接功能,作为服务器也能很好地工作。
但我再次调用了连接函数,这意味着 "socketInit" 变量为真,因此连接函数尝试:
socket.io.connect();
我检查了服务器和客户端控制台,看起来已经连接,但问题是事件没有触发!
服务器端 'connection' 事件在重新连接时触发,但客户端 'connect' 或 'reconnect' 事件未触发。我试图弄清楚发生了什么,但我还是不明白。我多次检查网络控制台和服务器控制台,连接本身工作正常,但问题是事件不工作!
如果有人知道方法,将不胜感激帮助我。谢谢 ;)
p.s。我尝试添加 'reconnected'、'reconnection'、'reconnect_error' 事件处理程序,但都不起作用。
如果您使用的是 Socket.io 1.0,请尝试使用套接字上的 io 管理器来处理手动断开和重新连接。
var socket = null;
var socketInit = false;
function connect() {
if(!socketInit) {
socket = io();
socketInit = true;
//attach event handlers
socket.on('connect', function() {
console.log('connect fired!');
});
socket.on('disconnect', function() {
console.log('disconnect fired!');
});
socket.on('reconnect', function() {
console.log('reconnect fired!');
});
}
else {
socket.io.reconnect();
}
}
function disconnect() {
socket.io.disconnect();
}
套接字上的reconnecting_attempt、reconnecting、reconnected 和connected 事件应该都在之后发出。
我正在使用 socket.io 2.1.1,这里是 socket.io 断开连接后处理重新连接的所有事件序列:
就这样socketClient.on(eventName, callBackFunc);