是什么断开了我的 Websocket 连接? (cloudflare,apache 的 mod_proxy)
What's disconnecting my Websocket connection? (cloudflare, apache's mod_proxy)
我所有的 websocket 连接都通过 http(s) 端口到达并代理到后端 WS 服务器:
[client]----[cloudflare]----[Apache 2.4 mod_proxy_wstunnel]----[websocket server]
一旦客户端连接到我的 WS 服务器,如果没有数据通过套接字,连接总是在正好 100 秒后断开。
在开发环境下,同一个客户端,同样使用mod_proxy_wstunnel
,同一个WS服务器,不会出现这个限制
如果WS服务器每60秒发送一次ping,连接没有被切断。
我想知道是否有人看过有关 Cloudflare 断开静默 WS 连接的文档,以及服务器上设置的 mod_proxy
是否可能是原因。我不确定如何查明这一点。
支持技术人员通过电子邮件向我确认,Cloudflare 会自动断开保持休眠状态 100 秒的 websocket 连接。
Cloudflare 有 100 秒超时。
只有 Cloudflare 的企业用户可以更改此设置。
所以解决方案是让一些保持活动状态以重新打开连接。或者,更好的解决方案是根本不使用 CloudFlare。它将为您提供更大的灵活性,并且您不必依赖外部第三方。
我遇到了同样的问题。我将 "proxied" 模式更改为仅 DNS,并从 GoDaddy 购买了我自己的证书。在那之后没有面临那个问题。此处有详细讨论:https://techxperiment.blogspot.com/2020/06/aws-ec2-tomcat-jsr-356-secure.html
我所有的 websocket 连接都通过 http(s) 端口到达并代理到后端 WS 服务器:
[client]----[cloudflare]----[Apache 2.4 mod_proxy_wstunnel]----[websocket server]
一旦客户端连接到我的 WS 服务器,如果没有数据通过套接字,连接总是在正好 100 秒后断开。
在开发环境下,同一个客户端,同样使用mod_proxy_wstunnel
,同一个WS服务器,不会出现这个限制
如果WS服务器每60秒发送一次ping,连接没有被切断。
我想知道是否有人看过有关 Cloudflare 断开静默 WS 连接的文档,以及服务器上设置的 mod_proxy
是否可能是原因。我不确定如何查明这一点。
支持技术人员通过电子邮件向我确认,Cloudflare 会自动断开保持休眠状态 100 秒的 websocket 连接。
Cloudflare 有 100 秒超时。 只有 Cloudflare 的企业用户可以更改此设置。
所以解决方案是让一些保持活动状态以重新打开连接。或者,更好的解决方案是根本不使用 CloudFlare。它将为您提供更大的灵活性,并且您不必依赖外部第三方。
我遇到了同样的问题。我将 "proxied" 模式更改为仅 DNS,并从 GoDaddy 购买了我自己的证书。在那之后没有面临那个问题。此处有详细讨论:https://techxperiment.blogspot.com/2020/06/aws-ec2-tomcat-jsr-356-secure.html