过去几天,我们正在努力应对非活动的websocket连接。问题可能出在网络层面。我想询问是否有任何开关/配置选项为独立模式下的Pushion Passenger的websocket连接设置超时。
答案 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被"劫持"从服务器和应用程序完全控制和拥有连接。