我在特定接入网络上使用 SockJS 时遇到了一个问题。它认为这与 SockJS 根据网络状态选择最佳传输协议(websocket、长轮询……)的方式有关。
使用网络浏览器,我的 SockJS 客户端通过 websocket 传输协议连接到我的节点 SockJS 服务器。我什至在节点上看到“连接时”事件。但是,当我发送数据时,没有任何东西通过它。详尽地说,它在其他一些接入网络上运行良好。
根据网站http://websocketstest.com/的结果,这个接入网的状态有点特殊:对于WebSockets(80端口),卡在了:
Connected Yes✔
Data Receive Yes✔
为了确保 websocket 运行良好,它还应该有一个由测试服务器每秒钟更新一次的“服务器时间”行。既然不是这样,我很确定我有一个透明的 HTTP 代理,它会破坏 websocket 连接。
然而,SockJS 并没有发现这一点,它也没有切换到回退协议。我以为它就是为此而设计的。
我对 SockJS 的传输协商功能有什么误解吗?
Socket.IO
在这种情况下或对于这种具有透明 HTTP 代理的访问网络更健壮吗?
我知道我可以将 SockJS 与 SSL 一起使用,但我认为这只是一个后备方案,而不是真正的解决方案。