我的所有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
可能是原因。我不确定如何深入了解这一点。
答案 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。它将为您提供更大的灵活性,并且您不必依赖外部第三方。