每隔2分钟就会丢弃与OpenShift DIY盒式磁带的WebSocket连接

时间:2014-08-31 15:34:39

标签: websocket openshift

我的应用程序由两部分组成:WebSocket服务器 - 托管在OpenShift DIY盒式磁带上; WebSocket客户端 - 从家用PC连接到我的服务器。 WebSocket服务器是使用嵌入式Jetty及其WebSockets库编写的。客户端使用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 HEAD /
接受: /
用户代理: Ruby
X-Forwarded-Proto: https
X-Forwarded-Host:.... rhcloud.com
连接:保持活力
X-Request-Start:t = 1409771442217677
X-Forwarded-For: 10.158.21.225
主持人:wsproxy-gimes4dieni.rhcloud.com
X-Forwarded-Port:443
X-Client-IP:10.158.21.225
X-Forwarded-SSL-Client-Cert :( null)
X-Forwarded-Server:localhost

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

1 个答案:

答案 0 :(得分:0)

通过SSH进入您的项目,使用~/haproxy/conf/haproxy.cfg等文本编辑器打开vi,然后根据需要修改timeout queuetimeout clienttimeout server。我将我设置为5m,这是5分钟。完成更改后,退出并运行

~/haproxy/bin/control restart

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