【问题标题】:Socket.IO - how to handle Node.js offlineSocket.IO - 如何离线处理 Node.js
【发布时间】:2014-06-28 21:38:52
【问题描述】:

在连接到同一端口的不同浏览器聊天时一切正常,但是当我使用 ctrl+C 关闭节点服务器时,我的浏览器中出现以下错误:

GET http://my-url net::ERR_CONNECTION_REFUSED 

我尝试了以下客户端回调:

socket.on('reconnect_attempt' ...
socket.on('message' ...

但它们不会触发,所以我做了一个肮脏的黑客,它确实有效;使用计时器每秒检查一次套接字,如果节点服务器出现故障,则执行重定向:

setInterval(function(){ 
  if (socket.disconnected) window.open("http://otherurl","_self"); 
}, 1000);

有没有更好的方法来使用客户端 js 代码检测节点服务器是否下线?

【问题讨论】:

    标签: node.js sockets callback


    【解决方案1】:

    根据其他 SO 问题How can I detect disconnects on socket.io?

    复制以下内容以供快速参考:

    socket.io 有一个断开事件,把它放在你的连接块中:

    socket.on('disconnect', function () {
        //do stuff
    });
    

    【讨论】:

    • 很抱歉迟来的接受答复;您的代码有效并否定了我在 OP 中发布的计时器解决方案。
    【解决方案2】:

    我找到了!你只需要监听错误事件(socket.io 0.9)

    socket.on('error', function() {
          // handle server error here
          console.log('Error net::ERR_CONNECTION_REFUSED occured. Handle me');
    });
    

    socket.io 客户端 0.9 文档中没有记录此事件,这很奇怪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-16
      • 2017-09-23
      • 1970-01-01
      • 2014-04-22
      • 2021-03-14
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多