我正在使用ccapture录制的Threejs动画
这取决于每个客户端都与 Node 后端有一个连接,该后端接收一个“渲染帧”套接字事件。
这可以工作一段时间,但是几分钟后,客户端会在不出错的情况下静默关闭连接,然后创建一个新的连接,从而丢失了第一个初始套接字连接。我一直在打开 window ,始终保持专注。
我的套接字调试日志显示以下内容。它始终适用于多个帧,但始终在一定但不一致的时间后掉落:
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!
我简化了 Node 后端上的渲染框架监听器以进行调试,现在看起来就像这样:
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
任何有关“运输关闭”错误原因的帮助将不胜感激。
最佳答案
我认为您应该看一下这个问题:NodeJS + Socket.io connections dropping/reconnecting?
function sendHeartbeat(){
setTimeout(sendHeartbeat, 8000);
io.sockets.emit('ping', { beat : 1 });
}
io.sockets.on('connection', function (socket) {
socket.on('pong', function(data){
console.log("Pong received from client");
});
}
setTimeout(sendHeartbeat, 8000);
socket.on('ping', function(data){
socket.emit('pong', {beat: 1});
});