我试图通过Apache 2.4.7(在Ubuntu上运行)代理websocket。
连接已正确建立,但如果浏览器或服务器不发送相关数据一段时间(几分钟),则来自服务器的新消息不会传送到浏览器。
此外,服务器上的浏览器或服务似乎也没有意识到连接在某种程度上被破坏了(它们根本不会抛出任何错误)。
如何配置服务器以避免此问题?
这是我的配置:
ProxyRequests Off
ProxyPass /somepath ws://127.0.0.1:6080/ retry=60 keepalive=On timeout=9999 ttl=9999
ProxyPassReverse /somepath ws://127.0.0.1:6080/ retry=60
答案 0 :(得分:0)
我遇到了同样的问题,并通过配置ProxyWebsocketIdleTimeout
(值为300(秒))解决了该问题。这里有文档:https://httpd.apache.org/docs/trunk/mod/mod_proxy_wstunnel.html
您的套接字应该有一个保持活动消息。我的每30秒执行一次,但是由于我的ProxyWebsocketIdleTimeout指令显然少于30秒,所以连接中断了。我将其设置为300秒(5分钟)很好,问题已解决。