1

我在网络漫游连接后面的 fm.websync中遇到了一个非常奇怪的问题。

该库连接到该通道的 websockets 和 onRecieve 处理程序,从服务器接收消息。

在任何通常的网络上,websocket 连接(HTTP101 请求)保持不变,我能够接收消息。

在防火墙后面,javascript 代码到达频道订阅的 onSuccess 处理程序,但没有收到任何消息。在检查 chrome 浏览器选项卡时,我观察到 websocket 连接请求进入完成状态(而不是永远处于挂起状态)。

我意识到这是防火墙的一些问题,这个问题解决了这个问题,但我想知道是否有任何方法可以以编程方式确定这种状态。基本上,如果 websocket 运行不正常,则切换到 http 轮询。

我能想到的一种解决方案是保留一个全局标志并在 onRecieve 处理程序中将其设置为 true。并且还在频道订阅之前初始化超时函数(2-3s)以验证标志是否为真,否则回退。我期待着一种更整洁且与时间无关(滞后独立)的方法。

4

0 回答 0