【问题标题】:Socket.io connect with server offlineSocket.io 离线连接服务器
【发布时间】:2013-08-17 08:57:41
【问题描述】:

如何检测服务器是否离线,或由于其他原因无法连接。我的代码看起来像这样。

this.socket = io.connect(connectionInfo, {
    reconnect:false
});

它不会抛出任何错误,因此 try/catch 子句不起作用。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    使用

    • this.socket.on("connect", callback) 捕捉连接事件
    • this.socket.on("disconnect", callback) 捕捉断线事件
    • this.socket.on("connect_failed", callback) 捕获失败的连接尝试
    • this.socket.io.on("connect_error", callback) 捕捉服务器是否离线

    您可以在https://github.com/LearnBoost/socket.io/wiki/Exposed-events找到所有活动

    【讨论】:

    【解决方案2】:

    自 1.0 更新以来,连接事件有所不同。 阅读此页面了解更多信息:http://socket.io/docs/migrating-from-0-9/

    就我而言,我可以检测到这样的连接错误:

    var manager = io.Manager('http://'+window.location.hostname+':3000', { /* options */ });
    manager.socket('/namespace');
    manager.on('connect_error', function() {
        console.log("Connection error!");
    });
    
    this.socket = io.connect('http://'+window.location.hostname+':3000');
    

    【讨论】:

      【解决方案3】:

      如果您的服务器离线并且客户端尝试连接使用:

      socket.on('error', function (err) {
          console.log(err);
      });
      

      所以客户端知道他无法访问服务器。

      【讨论】:

      • 经过一些测试,在最新稳定的 Socket.io 客户端(v0.9.16)中似乎没有这种方式
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2013-01-30
      • 2021-03-31
      • 2021-08-22
      相关资源
      最近更新 更多