我是socket.io的新手。所以我的socket.io服务器会发生崩溃,导致出现以下错误
timers.js:103
if (!process.listeners('uncaughtException').length) throw e;
^
Error: socket hang up
at createHangUpError (http.js:1360:15)
at ServerResponse.OutgoingMessage._writeRaw (http.js:507:26)
at ServerResponse.OutgoingMessage._send (http.js:476:15)
at ServerResponse.OutgoingMessage.write (http.js:749:16)
at XHRPolling.doWrite (E:\sitesroot\0\node_modules\socket.io\lib\transports\
xhr-polling.js:67:17)
at XHRPolling.HTTPPolling.write (E:\sitesroot\0\node_modules\socket.io\lib\t
ransports\http-polling.js:132:8)
at XHRPolling.Transport.packet (E:\sitesroot\0\node_modules\socket.io\lib\tr
ansport.js:515:15)
at Object.<anonymous> (E:\sitesroot\0\node_modules\socket.io\lib\transports\
http-polling.js:79:12)
at Timer.list.ontimeout (timers.js:101:19)
它没有显示错误发生的位置或原因,因此非常确定它与我编写的代码无关。可能是运输的东西?我对此并不了解。任何关于如何阻止它崩溃的建议都将受到高度赞赏。感谢
答案 0 :(得分:6)
问题是@miktam说的。 要解决此问题,您需要为代码添加错误侦听器。 将此代码添加到您的应用程序中:
//Error handler
process.on('uncaughtException', function (exception) {
// handle or ignore error
console.log(exception);
});
如果出现错误,它将调试它而不是崩溃它。我有完全相同的问题,这解决了它。
答案 1 :(得分:1)
选中此issue
引用Isaac Schlueter:
好消息是你不再泄露记忆。坏消息是 您确实需要向对象添加错误侦听器。
在大多数应用中,您通常可以将ECONNRESET视为大致相同 优雅的亲密。只要确保你真的停止使用它 socket,因为它现在关闭了。然而,这不是一个优雅的关闭, 因为它在任何意义上都不是“优雅的”。在v0.8.20之前,节点会 愉快地缓冲所有写入重置套接字,导致内存爆炸 死亡。