是什么断开了我的 Websocket 连接?(Cloudflare,Apache的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的企业用户可以更改此设置。

所以解决方案是有一些keep-alive重新打开连接。另外,一个更好的解决方案是根本不使用CloudFlare。它将给你更多的灵活性,你不必依赖于外部第三方。

我也面临同样的问题。我将"代理"模式改为DNS,并从GoDaddy购买了自己的证书。之后就不用面对这个问题了。这里有详细的讨论:https://techxperiment.blogspot.com/2020/06/aws-ec2-tomcat-jsr-356-secure.html

我强烈建议向连接发送ping以避免断开连接。发送ping到WebSocket连接可以帮助防止断开连接。

相关内容

  • 没有找到相关文章

最新更新