【发布时间】:2016-02-18 22:22:25
【问题描述】:
我有一个基于网络套接字的聊天应用程序 (HTML5)。
浏览器通过 wss 打开与基于 Java 的 Web 套接字服务器的套接字连接。
当浏览器直接连接到服务器(没有任何代理)时,一切正常。
但是当浏览器位于企业代理之后,浏览器套接字连接会在大约 2 分钟无活动后自动关闭。 浏览器控制台显示“Socket closed”。
在我的测试环境中,我有一个 Squid-Dansguardian 代理服务器。
IMP:如果浏览器在没有任何代理的情况下连接,则不会观察到此行为。
为了让一些活动继续进行,我嵌入了一个简单的 jquery 脚本,它将每 60 秒向另一台服务器发出一个 http GET 请求。但这并没有帮助。大约 2 分钟无操作后,我的浏览器控制台中仍然出现“套接字关闭”。
欢迎任何帮助或指点。
谢谢
【问题讨论】:
-
代理是否支持或过滤掉 wss: 协议?我知道我们的公司代理不知道如何处理它,所以流量没有通过。
-
你需要一个回退机制,所以当 wss 没有通过时,你可以回退到长轮询或其他东西,这需要在服务器和客户端上工作。
-
快速说明:如果有持续的聊天活动,则套接字不会关闭。只有在大约 2 分钟内没有任何活动(聊天消息)时,Socket 才会自动关闭。
-
服务器每分钟发送 WebSocket ping 帧怎么样?这应该可以保持连接活跃。
标签: javascript html websocket http-proxy