如何终止乘客的非活动websocket连接

时间:2017-12-13 14:40:26

标签: passenger

过去几天,我们正在努力应对非活动的websocket连接。问题可能出在网络层面。我想询问是否有任何开关/配置选项为独立模式下的Pushion Passenger的websocket连接设置超时。

2 个答案:

答案 0 :(得分:0)

您应该在应用程序级别解决这个问题,因为在其他层中解决它会更加难看(对websocket的了解较少)。

使用Passenger Standalone,您可以尝试设置max_requests。这应该导致应用程序进程半定期重启,并且在关闭进程时,Passenger通常应该中止websocket连接。

如果您想要更多地控制重启期,您还可以使用例如每隔一段时间执行rolling restarts的cron作业,这对用户来说也不应该是明显的。

答案 1 :(得分:0)

Ruby和Passenger中的Websockets(也可能是node.js)不是"本地"到服务器。相反,你的应用程序"劫持"套接字并控制所有细节(超时,解析等等)。

这意味着必须在应用程序层(或您正在使用的任何框架)中实施解决方案,因为Passenger不再保留有关套接字的任何信息。

我知道这不是你想要的答案,但这是事实。

一些方法使用本机websockets,其中服务器控制websocket连接(超时,解析等,即Ruby MRI碘服务器),但大多数websockets被"劫持"从服务器和应用程序完全控制和拥有连接。