Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 高速公路(节点)未检测到断开连接,无限等待,我可以设置超时吗?_Javascript_Node.js_Websocket_Autobahn - Fatal编程技术网

Javascript 高速公路(节点)未检测到断开连接,无限等待,我可以设置超时吗?

Javascript 高速公路(节点)未检测到断开连接,无限等待,我可以设置超时吗?,javascript,node.js,websocket,autobahn,Javascript,Node.js,Websocket,Autobahn,我在节点中使用这个AutobahnJS代码来接收来自服务的数据。它工作得很好,每秒可以获得多个事件。当我的互联网暂时断开高速公路连接时,高速公路没有检测到丢失的连接,也没有将“Websocket连接已断开”写入控制台,它只是挂起。无限期 是否可以设置超时,如果1分钟后没有数据到达,请重新连接?或者我可以使用setTimeout函数ping服务器,如果没有pong返回,请关闭连接并尝试重新打开它 我在谷歌上搜索,直到手指流血,但我没有找到这个问题的直接答案。多谢各位 connection.onop

我在节点中使用这个AutobahnJS代码来接收来自服务的数据。它工作得很好,每秒可以获得多个事件。当我的互联网暂时断开高速公路连接时,高速公路没有检测到丢失的连接,也没有将“Websocket连接已断开”写入控制台,它只是挂起。无限期

是否可以设置超时,如果1分钟后没有数据到达,请重新连接?或者我可以使用setTimeout函数ping服务器,如果没有pong返回,请关闭连接并尝试重新打开它

我在谷歌上搜索,直到手指流血,但我没有找到这个问题的直接答案。多谢各位

connection.onopen = function(session) {
    session.subscribe(arg, someEvent);
    }

connection.onclose = function() {
    console.log("Websocket connection dropped");
    }

connection.open();

如果不发送一些数据,则无法识别不干净的断开连接。协议级别的WebSocket ping/pong机制未在浏览器中公开,并且Autobahn | JS在Node.JS中运行时没有任何不同的处理


目前,您需要在应用程序级别实现自己的乒乓机制

在节点上运行时,AutobahnJS使用“ws”库。此库可能(也可能不)公开WebSocket ping/pong。如果可以的话,我们可以在高速公路上使用。然而,正如gzost所提到的,W3C规范的浏览器WebSocket API并没有公开它。浏览器可能(也可能不)自己进行WS-ping/pong(至少在过去,IE是这样做的)。我添加了一个间隔来检查何时收到最后一个数据,以及是否过多的时间,然后在onclose()中再次发出connection.open()。就我的一生而言,我无法让它发挥作用。一旦连接关闭,如果您再次尝试打开它,它就会抛出错误?!?我尝试了Autobahn Python,但是文档和示例太多了,我想不出如何将ProtocolOptions设置为AutoPing。我最终放弃了并破解了它:在setInterval确定超时退出()后,将其包装在
while:do done
bash脚本中。如果有一个工作节点或pythong示例,我将不胜感激!!