firefox中未触发socket.io连接事件

firefox中未触发socket.io连接事件,socket.io,socket.io-1.0,Socket.io,Socket.io 1.0,我有一些类似下面的代码 <script src="/socket.io/socket.io.js"></script> <script> var socket = io('http://localhost:8080'); socket.on('connect', function(){ socket.on('some-event', function(data) {}); }); socket.on('disconnect', fu

我有一些类似下面的代码

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io('http://localhost:8080');
  socket.on('connect', function(){
      socket.on('some-event', function(data) {});
  });
  socket.on('disconnect', function(){});
</script>

变量套接字=io('http://localhost:8080');
socket.on('connect',function(){
on('some-event',函数(数据){});
});
on('disconnect',function(){});
在connect回调中,我有一些响应消息的代码。这在铬上工作得非常好。在第一页加载时,它可以在firefox上正常工作。如果重新加载页面,则不会调用connect事件


Im使用1.4.8版本的服务器和js客户端

我使用以下代码解决了这个问题。不太干净,但目前这有助于我们推进项目。正如您所看到的,问题是在重新加载页面后连接事件没有触发,因此我决定在超时后附加事件(如果从未触发连接)

function attachEventListners() {
    socket.on('some-event', function(data) {});
}

var attached = false;
socket.on('connect', function(){
      attachEventListners();
      attached = true;
});

setTimeout(function() {
    if (!attached) {
        attachEventListners();
    }
}, 1000);

您不必在
connect
侦听器中声明事件侦听器,因此,尽管我不知道您的问题的直接解决方案,但我认为这可以解决问题:

<script>
  var socket = io('http://localhost:8080');
  socket.on('some-event', function(data) {});
  socket.on('disconnect', function(){});
</script>

变量套接字=io('http://localhost:8080');
on('some-event',函数(数据){});
on('disconnect',function(){});

因为能够接收消息意味着套接字已连接。

而不是超时,所以应该使用窗口上的加载事件侦听器

window.addEventListener("load",attachEventListners);

这有帮助吗:这是我尝试的第一件事,不幸的是它没有起作用。它应该起作用(另请参阅)。如果没有,则可能是由于与您的FF问题相同的问题引起的,即缺少
connect
事件。