12

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

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

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

4

3 回答 3

24

利用

  • 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找到所有事件

于 2013-08-15T11:21:58.363 回答
4

自 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');
于 2014-06-21T13:01:24.930 回答
2

如果您的服务器处于脱机状态并且客户端尝试连接使用:

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

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

于 2014-03-21T11:45:54.433 回答