【发布时间】:2013-10-04 11:18:04
【问题描述】:
我正在将 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 的页面,即使在第一次请求时也能正常工作,因此应该排除节点问题。 浏览器也无所谓,每个浏览器都一样。
【问题讨论】: