与OpenShift DIY墨盒的WebSocket连接每2分钟中断一次



我的应用程序由两部分组成:WebSocket服务器-托管在OpenShift DIY盒带上;WebSocket客户端-它从家用电脑连接到我的服务器。WebSocket服务器是使用嵌入式Jetty及其WebSocket库编写的。客户端是使用JAVA和Tyrus库编写的。它运行得很好,除了一个我无法解释的小故障。

当在OpenShift DIY盒带上运行WebSocket服务器时,WebSocket连接每2分钟就会断开一次。连接断开的发生非常精确,因此显然与潜在的网络中断无关。此外,我在Heroku上测试了完全相同的应用程序,没有连接中断。此外,onClose(…)方法接收NORMAL_CLOSURE关闭代码。

我几乎可以肯定,OpenShift Apache层每2分钟关闭一次空闲的WebSocket连接,即使WebSocket客户端发送Ping消息并从服务器接收Pong消息。有人经历过这种类型的WebSocket连接中断吗?有没有可以用来防止连接中断的参数?

提前谢谢。

更新:我在服务器端添加了一个专用线程来向客户端发送Pong消息(Jetty还不支持Pong处理程序,所以我不能使用Ping消息),并且丢弃的消息消失了。OpenShift Apache层似乎开始将连接视为"活动",并没有关闭它。然后我注意到另一个奇怪的行为:有人每小时通过HTTPS ping我的服务器端应用程序。HTTP标头如下所示:
HTTP/1.1头/
接受:/
用户代理:Ruby
X-Forwarded-Proto:https
X-Forwarded-Host:。。。。rhcloud.com
连接:保持活动
X-请求启动:t=1409771442217677
X-Forwarded-For:110.158.21.225
主机:wsproxy-gimes4dieni.rhcloud.com
X转发端口:443
X-Client-IP:10.158.21.225
X-Forwarded-SSL-Client-Cert:(null)
X-Forwarded-Server:localhost

我不使用Ruby,我只使用HTTP,IP地址与我的常规请求不同。有人知道这是否是某种来自互联网的OpenShift"服务"吗?

SSH到您的项目中,使用文本编辑器(如vi)打开~/haproxy/conf/haproxy.cfg,然后根据需要编辑timeout queuetimeout clienttimeout server。我把我的设置为5m,也就是5分钟。更改后,退出并运行

~/haproxy/bin/control restart

现在应该设置您的websocket超时。

最新更新