【发布时间】:2016-03-28 20:08:13
【问题描述】:
我在使用 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函数,这意味着“socketInit”变量为真,所以connect函数尝试:
socket.io.connect();
我检查了服务器和客户端控制台,看起来它已经连接,但问题是事件没有被触发!
重新连接时会触发服务器端“连接”事件,但未触发客户端“连接”或“重新连接”事件。我试图弄清楚发生了什么,但我仍然不明白。我多次检查了 web 控制台和服务器控制台,连接本身工作正常,但问题是事件不起作用!
如果有人知道路,将非常感谢帮助我。谢谢;)
附言我尝试添加“重新连接”、“重新连接”、“重新连接错误”事件处理程序,但都不起作用。
【问题讨论】:
-
我不确定你能不能那样做。谁在连接这个套接字?如果是socket.io客户端,那么只有客户端才能重连。
-
xbirkett// 感谢您的评论。这些是客户端代码。我只想做的是客户可以随时连接/断开/重新连接。你对此有更好的建议吗?这将是非常感谢-给我一个更好的方法;)
标签: javascript node.js sockets socket.io