我正在将 socket.io 与最新版本的 node.js 一起使用,而 socket.io 显示了一个奇怪的行为:connect 事件第一次在客户端触发,但不是在服务器端触发。在重新加载或只是再次加载页面后,该事件在客户端和服务器端都正确触发。有什么问题(我的代码?)?
// Client
var socket = io.connect(window.location.protocol + '//' + window.location.hostname, {
'sync disconnect on unload': true
});
socket.on('connect', function() {
alert("Connect");
// Do other stuff
});
-
// Server
io.sockets.on('connection', function(socket) {
console.log("connection");
io.sockets.on('connect', function(socket) {
console.log("connect");
});
});
启动服务器并加载页面:客户端触发警报,服务器仅记录connection
。现在再次加载页面,它同时记录connection
和connect
。
更新:似乎只有第一个连接有这样的问题,之后它可以按预期在任何地方工作。就在每个节点服务器(重新)启动之后,就会出现这种行为。注意:节点本身会提供使用 socket.io 的页面,并且即使在第一次请求时也能正常工作,因此应该排除节点问题。浏览器也无所谓,每个浏览器都一样。