socket.io连接事件没有在firefox中触发

时间:2016-09-11 07:43:41

标签: 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', function(){});
</script>

在connect回调中,我有一些响应消息的代码。这对铬合金非常好。在第一页加载它在Firefox上工作正常。如果您重新加载页面,则不会调用connect事件。

我正在使用1.4.8版本的服务器和js客户端

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

您不必在connect侦听器中声明事件侦听器,因此即使我不知道您的问题的直接解决方案,我认为这将解决它:

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

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

答案 2 :(得分:0)

您应该在窗口

上使用load事件侦听器,而不是超时
window.addEventListener("load",attachEventListners);