javascript - WebSocket 进程不断停止
问题描述
我们正在使用 PM2 为我们的应用程序运行 websocket。几天前,我们 websocket 的 PM2 任务突然停止运行。
我们试图通过 PM2 和 winston 的日志找出原因,我们使用它们来记录有关套接字的其他信息,但遗憾的是我们无法弄清楚 websocket 停止的原因。
由于这不是第一次发生这种情况,我们可能希望获得一些关于如何运行我们的 websocket 的提示,而不会经常死机。
提前致谢!
解决方案
您没有提到您在 nodejs 应用程序中使用哪个 npm 包来处理 websocket。您也没有提到您的 nodejs 应用程序在远端连接到什么,或者哪一端启动了连接。所有这些对于故障排除都很重要。
我会尽力为您指明正确的方向。
如果您使用的是npm 的 ws 包,您将从您的连接中获得关闭和错误事件。(您也可以在浏览器中使用。)特别是 close 事件带有两个参数:code
和reason
。代码的值是 1000 - 4999。您需要查看代码值以了解连接断开的原因。您需要查看断开连接两端的代码和原因才能知道原因。
您可能在接受连接的代码中需要实现websocket ping/pong 协议。空闲连接会被网络的各个部分丢弃。
请注意,浏览器不能接受 websocket 连接,只能发起它们。另请注意,当浏览器从其 websocket 服务器收到 ping 请求时,它们会自动进行 pong。您的服务器所要做的就是发送 ping 和监听 pong 事件。
而且,因为我们正在处理一个全球分散的网络,连接有时会无缘无故地掉线。强大的软件有办法重新建立断开的连接。
推荐阅读
- php - 如果变量为空,则设置默认值
- stripe-payments - 如何通过 Stripe Payment Request Button 收集帐单地址
- reactjs - Apollo 客户端 updateQuery {} 中缺少字段 [fieldName]
- c# - 正方体无法读取单个数字
- javascript - 显示自定义叠加层的 ag-grid
- c++ - 使用终端 GCC 和 G++ 编译时,仅适用于 Box2D 的未定义参考
- python - 将值打印到 Tkinter 标签
- python - 尝试 Newton-Raphson 时获取“'float' object is not callable”
- python - 如何为 Windows 重写这个多处理代码?
- angular - 如何在过滤属性时将 ViewChildren QueryList 中的特定项目作为 ElementRef 获取?