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

标签 javascript node.js websocket autobahn

我在 Node 中使用此 AutobahnJS 代码从服务接收数据。它工作得很好,每秒获取多个事件。当我的互联网暂时断开连接时,Autobahn 没有检测到丢失的连接并且没有将“Websocket 连接断开”写入控制台,它只是挂起。无限期。

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

我用谷歌搜索,直到我的手指流血,但我没有找到这个问题的直接答案。非常感谢!

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

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

connection.open();

最佳答案

如果没有发送一些数据,就不可能识别出不干净的断开连接。协议(protocol)层的WebSocket ping/pong机制并没有暴露在浏览器中,Autobahn|JS在Node.js中运行时也没有任何不同的处理。

目前,您需要在应用程序级别实现自己的 ping/pong 机制。

关于javascript - 高速公路( Node )未检测到断开的连接,无限等待,我可以设置超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527429/

相关文章:

node.js - 在 Mongoose 中保存对象后如何获取 objectID?

python - 在 apache 中运行 Tornado

javascript - 带有进度的 Jquery Ajax 上传正在重新加载页面

javascript - Ember.js:这些 .pushObject() 调用是同义的吗?

javascript - 浏览历史记录时非 SPA 应用程序中的 Backbone.js 出现问题

node.js - Firebase 云函数脚本未运行

javascript - 离开页面确认

javascript - 使用 Apache 作为后端 JavaScript (Strapi) 服务器的代理

websocket - SignalR AspNetCore 无法连接到远程服务器---> System.Net.WebException

node.js - 使用 jest 的 websocket 服务器 "ws"库的单元测试用例