我在fm.websync面临一个非常奇怪的问题,在Cyberroam连接之后。
此库连接到该频道的websockets和onRecieve处理程序,从服务器接收消息。
在任何常规网络上,websocket连接(HTTP101请求)仍然存在,我能够接收消息。
在防火墙后面,javascript代码到达频道订阅的onSuccess处理程序,没有收到任何消息。在检查chrome浏览器选项卡时,我发现websocket连接请求已达到完成状态(而不是永远处于挂起状态)。
我意识到这是防火墙的一些问题,这个question解决了它,但我想知道是否有任何方法以编程方式确定此状态。基本上,如果websocket运行不正常,请切换到http轮询。
我能想到的一个解决方案是保留一个全局标志,并在onRecieve处理程序中将其设置为true。并且在通道订阅之前初始化超时功能(2-3s)以验证flag是否为真,否则回退。我期待着一种更整洁,时间独立(滞后独立)的方法。