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