&引用;网页加载时websocket被中断;Firefox上的Socket.io

&引用;网页加载时websocket被中断;Firefox上的Socket.io,websocket,socket.io,Websocket,Socket.io,index.html var socket=io.connect('http://localhost:8080'); socket.on('news',函数(数据){ 警报(JSON.stringify(数据)); 控制台日志(数据); emit('my next event',{my:'data'}); }); 这对您的应用程序有什么影响?我的猜测是,在控制台中看到错误并不好 这里的问题是,你看到Firefox记录了这个错误,你对此无能为力。无法使用try…catch块或通过websocke

index.html


var socket=io.connect('http://localhost:8080');
socket.on('news',函数(数据){
警报(JSON.stringify(数据));
控制台日志(数据);
emit('my next event',{my:'data'});
});

这对您的应用程序有什么影响?我的猜测是,在控制台中看到错误并不好

这里的问题是,你看到Firefox记录了这个错误,你对此无能为力。无法使用
try…catch
块或通过
websocket.onerror
/
websocket.onclose来捕获此错误

见:

相关的:


    • 发生这种情况的原因是,您没有关闭打开的websocket

      此代码将删除此错误:

      Error: The connection to <websocket> was interrupted while the page was loading.
      Source File: localhost/socket.io/node_modules/socket.io-client/dist/socket.io.js
      Line: 2371
      

      我刚看完Socket.IO教程,就遇到了这个问题。我尝试了发布的解决方案,但它们似乎根本不起作用

      经过一些摆弄,一些尖叫和一些橡皮鸭,我终于明白了问题是什么。问题是它试图在套接字变量正确初始化之前连接到套接字。Javascript boo boo#1

      如果要将文件压缩为包含jQuery,然后像这样包装函数:

      
      $(函数(){
      var socket=io.connect('http://localhost:8080');
      socket.on('news',函数(数据){
      警报(JSON.stringify(数据));
      控制台日志(数据);
      emit('my next event',{my:'data'});
      });	
      });
      
      这似乎是Firefox中的一个公开错误(截至2015-03-29):

      正如Alexander指出的,解决方法(目前)是在beforeunload上调用websocket上的close()


      更新2016-04:根据Bugzilla的说法,这将在Firefox 48中得到修复

      一个解决方案是在断开连接事件上设置超时

      $(window).on('beforeunload', function(){
          socket.close();
      });
      

      多年来,我们定制的基于Undertow的Web服务器一直存在这个问题——我的问题是服务器没有响应套接字关闭消息


      根据作者的评论,我检查了
      AbstractReceiveListener.onFullCloseMessage
      的套接字关闭处理程序代码,并意识到我没有调用super方法。添加
      super.close()
      后,客户端上的套接字将完全关闭,并且不会发出错误。

      您需要包含导致此错误的代码。否则它就没有意义了。ethrbunny我已经添加了代码请检查它…帮助我…面对几乎类似的问题。请帮忙。服务器端客户端上的leggetter-->未获得授权,这就是客户端不发出任何数据的原因。但在InternetExplorer9中,它得到授权并发出数据bcoz ie使用xhr-polling。根据您的问题,听起来您在问为什么会出现中断错误。如果这不是您要问的问题,请更新您的问题。我在
      Chrome
      中也遇到过这种情况。这似乎解决了问题。事实上,我不认为这解决了问题。我也试过了,但我也没有解决它。这并没有解决我的问题。Firefox<48中的问题是,像这样的解决方法在我的Firefox版本(41)中不起作用。我做到了;但不幸的是,如果你正在编写一个网络应用程序(我猜这就是为什么我们大多数人都对socket.io感兴趣),你就无法决定用户使用哪一版本的Firefox(或其他浏览器):(没有为我修复,直到我发现服务器没有响应WebSocket
      close
      消息。现在服务器很好地确认了关闭,Firefox(60.0)很高兴。我在2020年仍然有这个问题,但只有在wss://this 解决方法不适用于socket.io(使用最新版本1.3.5)@LukasLiesis我认为这与套接字服务器无关。我使用的是PHP WebSocketsserver@Victorsocket.io用于服务器和服务器的两侧client@LukasLiesis但这仍然与socket.io产品无关。升级Firefox对我来说是唯一有效的方法。Thx解决了这个问题。解决方法在Firefox 41上不适用于我。这对我来说解决不了任何问题。相同的错误消息仍会记录在控制台中。
               setTimeout(() => {
                  $('#offlineModal').modal('show')
                }, 5000)