我正在开发一个应用程序,在这个应用程序中我在前端使用了角,在后端使用了websocket ( RxJs,Gorilla )。websocket连接每7分钟断开一次。我没有在任何地方设置7分钟作为超时。我将ngnix配置更改作为代理读取超时为7d,将活动超时保持为7d。此外,我们使用Aws ALB(负载均衡器)。不知道为什么会发生这种事?请帮帮我。我需要做任何配置更改吗?因为我已经监控了这个应用程序,如果websocket连接是活动的,它可以正常工作,直到几分钟后,它才开始做出奇怪的反应。所以我觉得这不是代码中的问题,而是一些配置
发布于 2022-08-20 11:19:48
在RFC中,websocket不是一个保持生存的连接和协议.这意味着,您必须设计一个体系结构来验证并使其活动。也见RFC 6455和PING,乒乓的定义。
一旦心跳信号将对端点的响应保持在服务器上(如我所知,这个ping/pong也可以从客户端引导),底层协议层将识别此连接是活动的,或者它必须关闭以符合规范。
一些框架可能已经封装了一个内置的保持生存机制来服务它,所以首先检查它们的引用。
而且,大猩猩没有处理它,所以你必须手动实现它。但是这是一项非常简单的工作,并且有许多示例代码,比如大猩猩websocket聊天示例:客户端和服务器,以及
SetPongHandler。
顺便说一下,websocket层上的任何通信错误都应该导致ws连接关闭。在这种情况下,应该设计一个稳定的通信框架,以便能够管理重新连接事件。
https://stackoverflow.com/questions/73425951
复制相似问题