nodejs socket.io无法捕获的错误

时间:2013-02-01 15:28:44

标签: node.js error-handling socket.io

我在nodejs上运行socket.io,在apache网站上运行socket.io客户端。如果我没有启动nodejs服务器并且我加载客户端页面,则会触发错误事件并显示空错误消息,并且我还将以下内容转储到我的Chrome控制台

GET http://domain.com:1337/socket.io/1/?t=1359731838906  socket.io.js:1659
Socket.handshake socket.io.js:1659
Socket.connect socket.io.js:1699
Socket socket.io.js:1551
io.connect socket.io.js:94
(anonymous function) general.js:7
(anonymous function)

如何阻止将此错误写入控制台?

3 个答案:

答案 0 :(得分:3)

隐藏该错误的唯一方法是从不首先调用io.connect - 这当然意味着即使服务器启动,您的应用程序的套接字功能也无法正常工作。

重要的是要理解你所看到的错误信息既不是socket.io本身(通过console.error())放置的,也不是未被捕获的JS异常。

错误消息由浏览器的XHR对象本身放置在您的控制台中。它告诉你XHR请求失败(因为你的服务器没有运行)。堆栈跟踪告诉您启动XHR请求的代码;它不是实际异常的痕迹。

由于socket.io 必须向服务器发出请求,因此如果服务器没有响应,它(或您)无法阻止该错误消息出现在控制台中。

答案 1 :(得分:0)

尝试

socket.on('connect_failed', function(){
    console.log('Connection Failed');
});

未经过测试。在Node.js socket.io-client connect_failed / connect_error event

找到它

答案 2 :(得分:0)

您无法从某种意义上说“错误”没有出现在控制台中,但是仍然可以通过侦听'connect_error''connect_failed''disconnect'套接字。

let socket = io.connect(url, {reconnection: false});
socket.on('update', data => console.log(data));

socket.on('connect_error', err => handleErrors(err));
socket.on('connect_failed', err => handleErrors(err));
socket.on('disconnect', err => handleErrors(err));