【问题标题】:Socket.io on connect fires many times on IE 8 on WinXPSocket.io on connect 在 WinXP 上的 IE 8 上多次触发
【发布时间】:2014-03-27 14:14:06
【问题描述】:

当我在 WinXP 下连接到 IE 8 上的节点服务器时,connect 事件被多次触发。当我在 WinXP 下的 Chrome 或 Windows 7 下的 IE 11 上执行相同操作时,connect 只触发一次,正如预期的那样。

客户端代码:

if (that.debug && window.console) console.log('connecting to '+server_addr);
var socket = that.socket = io.connect(server_addr,{
    'reconnect' : false,
    'connect timeout' : 1000,
    'max reconnection attempts': 3
});

socket.on('connect', function(){
    if (that.debug && window.console) console.log('Socket.on event:  connect');
    cb.call(that,socket);
});

IE 8 上的输出:

LOG: connecting to my_server.com
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect
LOG: Socket.on event:  connect

有人遇到过这个问题吗?知道如何解决/调试这个问题吗?

【问题讨论】:

  • 您可能在复制听众。如果它适合您的设计,请尝试在每次发射之前调用socket.removeAllListeners()。但我不认为问题出在这段代码中。还有吗?
  • “连接到”错误仅显示一次,并且代码中没有任何其他地方可以在不写入控制台的情况下连接或添加更多侦听器,所以我真的不认为就是这样。此外,在其他平台/浏览器上,“连接”只会触发一次。不过,我会尝试按照您的建议删除所有侦听器,以确认这不是问题。

标签: node.js internet-explorer-8 socket.io windows-xp


【解决方案1】:

我们在某些计算机上继续遇到此问题,我怀疑这与安装的 WiFi 路由器有关。

我们终于通过升级到socket.io 1.0 版解决了这个问题:

if (that.debug && window.console) console.log('connecting to '+server_addr);
var socket = io.connect(server_addr);
socket.on('connect', function(){
    if (that.debug && window.console) console.log('Socket.on event:  connect');
    cb.call(that,socket);
});

希望它能帮助遇到类似问题的其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多