node.js - Websocket 后端客户端连接在一段时间后停止接收流更新

标签 node.js websocket socket.io

我正在使用 nodejs 的 socket.io-client从远程 websocket 服务器获取数据流。过了一会儿,我干脆停止从远程服务器接收数据。没有错误或关闭事件。数据只是停止到达。

有趣的是,我停止接收数据之前的时间因主机系统的规范而异。

例如,在我的笔记本电脑上,它是一个 4 核 i7 和 16GB 内存,它可以在我停止接收数据之前运行一整夜(大约 8-9 小时)。在小型 AWS EC2 服务器上,我在 10 分钟内停止接收数据。

如果我强制重新连接到远程服务器,数据开始进入并在一段时间后再次停止接收。我目前解决这个问题的方法是每 10 分钟重新连接到远程服务器。

我最初认为这是我所连接的远程服务器的错误,所以我更换了我的数据提供商。但我仍然看到这个问题。

nodejs 进程的内存、cpu 和文件描述符使用是名义上的。 strace 没有显示任何有趣的东西。我需要一些关于如何调试它的想法。

请注意,我不是从浏览器连接到 websocket 服务器,而是从 nodejs 脚本连接到它。

最佳答案

如果您将 DEBUG 环境变量设置为 '*',您将能够看到幕后发生的更多信息(例如 ping/pong、断开连接、重新连接、事件等)。这应该有助于缩小问题所在的范围。如果显示的信息过多,您还可以尝试将 DEBUG 环境变量设置为 'socket*,engine*'

关于node.js - Websocket 后端客户端连接在一段时间后停止接收流更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48854175/

相关文章:

node.js - 如何使用 Socket.io 设置使 Apache 和 Node.js 工作?

node.js - heroku scale web=1 失败,出现 "record not found"- procfile 问题?

node.js - 函数不会等到 Promise 得到解决

node.js - 从 rethinkdb 获取条目到 node.js 博客

websocket - 使用 chrome 框架而不是 SockJS

python - 尝试在 pythonanywhere 上使用 praw 提交图像时出现 WebSocketProxyException 403

javascript - 断言失败 : You must use Ember. set() 将属性([object Object])设置为 `[object Object]`

node.js - 管理数据库中不断变化的数据

node.js - Socket.io 广播不工作

javascript - 套接字 : How to perform certain action while reconnecting after disconnection?