【发布时间】:2016-01-13 05:22:37
【问题描述】:
我正在制作一个用ccapture 录制的threejs 动画
这取决于每个客户端与节点后端的单个连接,该节点后端接收“渲染帧”套接字事件。
这工作了一段时间,但几分钟后,客户端在没有出错的情况下关闭连接,然后创建一个新连接,从而丢失第一个初始套接字连接。我一直保持窗口打开并保持焦点。
我的套接字调试日志显示以下内容。它总是适用于几帧,但总是在一定但不一致的时间后下降:
socket.io:socket emitting event ["render-frame",{"frame":168}] +0ms
render frame
{ frame: 168 }
socket.io:client client close with reason transport close +6ms
socket.io:socket closing socket - reason transport close +0ms
socket.io:client ignoring remove for fbD1a4Wx0jBzJ7hqAAAA +1ms
SOCKET DISCONNECTED!
我在节点后端简化了渲染帧侦听器以进行调试,现在它看起来像这样:
io.on("connection", function (socket) {
socket.on("disconnect", function (socket) {
console.log("SOCKET DISCONNECTED!");
});
socket.on("render-frame", function (data) {
console.log(data);
});
});
这在所有浏览器中都会发生,尽管我只需要它在 chrome 中工作。使用 socket.io 1.3.7
任何有关“传输关闭”错误原因的帮助将不胜感激。
【问题讨论】:
-
您在哪种设备上运行客户端? CPU 或网络连接是否存在任何可能的节电问题?
-
遇到同样的问题,而且添加 ping/pong 的建议似乎有点矫枉过正。这个问题似乎也只是“突然”发生(怎么可能?),它发生在 1.3.5 中......然后将 express 和 socket.io 升级到最新版本,它继续发生????跨度>
-
跟进我的评论 - 我正在使用“HackTimer”来解决我在 Chrome 中遇到的非活动标签问题。我没有按照他们的文档中的描述将脚本放在我的 JavaScript 文件的顶部,并且不出所料地导致了这种意外行为。
标签: javascript node.js sockets socket.io