【问题标题】:Socket.IO server hangs upSocket.IO 服务器挂了
【发布时间】:2013-09-06 12:27:02
【问题描述】:

我是 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)

它没有显示错误发生的位置或原因,因此很确定它与我编写的代码无关。可能与运输有关吗?我对它没有太多的了解。任何有关如何阻止它崩溃的建议将不胜感激。谢谢

【问题讨论】:

  • 您使用的是哪个版本的节点?我强烈建议你安装最新的稳定版
  • 这个错误多见于node v8.20
  • 我用的是v8.20,哪个版本最稳定?我正在使用 azure node.js sdk,我在某处读到 v8.21 可能会导致 azure sdk 出现一些问题.....知道在使用 azure sdk 时应该使用哪个版本吗?

标签: node.js websocket socket.io long-polling


【解决方案1】:

问题正如@miktam 所说。 要解决此问题,您需要在代码中添加错误侦听器。 将此代码添加到您的应用程序中:

//Error handler
process.on('uncaughtException', function (exception) {
  // handle or ignore error
  console.log(exception);
});

当出现错误时,它会控制台记录它而不是崩溃。我有完全相同的问题,这解决了它。

【讨论】:

  • 赞成...简单的解决方案,但在我到达这里之前非常令人沮丧...谢谢!
【解决方案2】:

查看issue

引用艾萨克·施卢特的话:

好消息是您不再泄漏内存。坏消息是 您确实需要向您的对象添加错误侦听器。

在大多数应用程序中,您通常可以将 ECONNRESET 视为大致相同 优雅的结束。只要确保你真的停止使用它 套接字,因为它现在已关闭。然而,这不是一个优雅的结束, 因为它在任何意义上都不是“优雅的”。在 v0.8.20 之前,节点会 愉快地缓冲所有写入以重置套接字,导致内存爆炸 死亡。

【讨论】:

  • 感谢您的信息!!
【解决方案3】:

对于 websocket 的新手,您可能会遗漏一些 socket.io 库所需的参数。

您可能使用的是 ws://localhost,它适用于 Websocket 库,但在使用 socket.io 时可能需要使用 ws://localhost:3000/socket.io/?EIO=4&amp;transport=websocket

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2012-12-19
    • 2016-08-20
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多