我有一个使用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();
}
如您所见,有两个函数用于连接或断开套接字。在连接函数中,它将“连接”、“断开连接”、“重新连接”处理程序附加到套接字上。
首先我调用了连接函数,它工作得很好。服务器端也正常工作。然后我调用了断开连接函数,也顺利完成,服务器也同样如此。
但是当我再次调用连接函数时,也就是说“socketInit”变量为真,因此连接函数尝试:
socket.io.connect();
我检查了服务器和客户端控制台,看起来已经连接成功,但问题是事件没有被触发!
服务器端的 'connection' 事件在重新连接时被触发,但客户端的 'connect' 或 'reconnect' 事件却没有被触发。我尝试找出问题所在,但仍然无法理解。我多次检查了 Web 控制台和服务器控制台,连接本身正常工作,但问题在于事件无法正常工作!
如果有人知道原因,请帮助我解决。谢谢 ;)
p.s. 我尝试添加了 'reconnected'、'reconnection' 和 'reconnect_error' 事件处理程序,但都没有起作用。