首页 > 解决方案 > WebSocket 进程不断停止

问题描述

我们正在使用 PM2 为我们的应用程序运行 websocket。几天前,我们 websocket 的 PM2 任务突然停止运行。

我们试图通过 PM2 和 winston 的日志找出原因,我们使用它们来记录有关套接字的其他信息,但遗憾的是我们无法弄清楚 websocket 停止的原因。

由于这不是第一次发生这种情况,我们可能希望获得一些关于如何运行我们的 websocket 的提示,而不会经常死机。

提前致谢!

标签: javascriptnode.jswebsocket

解决方案


您没有提到您在 nodejs 应用程序中使用哪个 npm 包来处理 websocket。您也没有提到您的 nodejs 应用程序在远端连接到什么,或者哪一端启动了连接。所有这些对于故障排除都很重要。

我会尽力为您指明正确的方向。

如果您使用的是npm 的 ws 包,您将从您的连接中获得关闭错误事件。(您也可以在浏览器中使用。)特别是 close 事件带有两个参数:codereason代码的值是 1000 - 4999。您需要查看代码值以了解连接断开的原因。您需要查看断开连接两端的代码和原因才能知道原因。

您可能在接受连接的代码中需要实现websocket ping/pong 协议。空闲连接会被网络的各个部分丢弃。

请注意,浏览器不能接受 websocket 连接,只能发起它们。另请注意,当浏览器从其 websocket 服务器收到 ping 请求时,它们会自动进行 pong。您的服务器所要做的就是发送 ping 和监听 pong 事件。

而且,因为我们正在处理一个全球分散的网络,连接有时会无缘无故地掉线。强大的软件有办法重新建立断开的连接。


推荐阅读