如果服务器出现故障,如何捕获浏览器抛出的ERR_CONNECTION_REFUSED?

时间:2014-07-10 18:14:04

标签: javascript node.js socket.io

我认为这个问题很简单,但我还没有在官方Socket.io docs找到答案。

我的Socket.io服务器和客户端通信成功,当我关闭服务器时,客户端将尝试重新连接服务器失败。这在Chrome开发人员控制台中显示:

enter image description here

有没有办法在客户端Javscript中检测此事件并以某种方式对其做出反应?我想我会在页面上显示一个对话框,例如"抱歉,服务器负载很重,等等。

3 个答案:

答案 0 :(得分:36)

从Socket 1.x开始,处理此问题的正确方法是将Manager对象用于给定套接字。它抛出一个connect_error事件,可以如下所示进行处理:

socket.io.on('connect_error', function(err) {
  // handle server error here
  console.log('Error connecting to server');
});

答案 1 :(得分:4)

这应该有效:

var socket = io('http://localhost');
socket.on('connect_error', function(err) {
  // notify user
});

答案 2 :(得分:0)

从现在到过去,都无法“ 处理红色消息。 您无法隐藏它们。

参考: https://stackoverflow.com/a/43056626/5563074

您不能隐藏,但是socket.io 有一种捕获它们的方法,就像前面介绍的那样。

socket.on('connect_error', function(e){
   //Do something
   //console.log(e);
});

文档: https://socket.io/docs/client-api/#Event-%E2%80%98connect-error%E2%80%99