什么断开我的Websocket连接? (cloudflare,apache&#mods.proxy)

时间:2016-09-23 19:41:08

标签: apache websocket cloudflare mod-proxy

我的所有websocket连接都通过http(s)端口到达,并被代理到后端WS服务器:

WITH dual as (SELECT 1 as x)
INSERT INTO Example(ProductId, Price)
    SELECT 'Steve' as ProductId, 4 as Price FROM dual UNION ALL
    SELECT 'James' as ProductId, 8 as Price FROM dual;

一旦客户端连接到我的WS服务器,如果没有数据通过套接字,则连接总是在100秒后被切断。

在开发环境中,使用相同的客户端,也使用[client]----[cloudflare]----[Apache 2.4 mod_proxy_wstunnel]----[websocket server] 和相同的WS服务器,不会发生此限制

如果WS服务器每60秒发送一次ping,则不会切断连接。

我想知道是否有人看过有关Cloudflare断开静默WS连接的文档,以及是否在服务器上设置mod_proxy_wstunnel可能是原因。我不确定如何深入了解这一点。

3 个答案:

答案 0 :(得分:5)

支持技术人员通过电子邮件向我确认,Cloudflare会自动断开仍处于休眠状态100秒的websocket连接。

答案 1 :(得分:1)

我遇到了同样的问题。我将“代理”模式更改为仅DNS,并从GoDaddy购买了自己的证书。在那之后没有面对那个问题。这里有详细的讨论:https://techxperiment.blogspot.com/2020/06/aws-ec2-tomcat-jsr-356-secure.html

答案 2 :(得分:0)

Cloudflare的超时时间为100秒。 只有Cloudflare的企业用户才能更改此设置。

因此,解决方案是使某些连接保持打开状态。或者,更好的解决方案是根本不使用CloudFlare。它将为您提供更大的灵活性,并且您不必依赖外部第三方。