Poco C++ Websocket 服务器 - 防止它在 60 秒后关闭

Poco C++ Websocket Server - prevent it closing after 60 seconds

本文关键字:Websocket C++ 服务器 Poco      更新时间:2023-10-16

我正在尝试使用 Poco C++ lib 的 WebSocket 类在我的服务器应用程序中构建一个漂亮干净的界面。

我的问题是使用示例 WebSocket 服务器应用程序,套接字在 60 秒后对客户端关闭 - 我需要它持续更长时间(想想 +15 分钟......

我尝试将 HTTP 层的超时设置为 10 分钟(3600 秒),这对行为没有影响。

不幸的是,Poco 示例和文档有点单薄 - 所以我希望这里有人能够提供帮助。

可以使用

以下命令设置超时

ws.setReceiveTimeout(Poco::Timespan(days, hours, minutes, seconds, microseconds));

如何保持 Websocket 连接直到任何一侧关闭?

超时可能是由于线程(池)而不是 WebSocket 本身造成的。您可能希望通过其构造函数设置不同的空闲时间。请参阅 http://pocoproject.org/docs/Poco.ThreadPool.html

连接关闭的原因是 WebSocket 是在处理程序中的堆栈上创建的。每个请求都会调用处理程序,并且生存期很短。要让它持续更长时间,您应该在堆上创建它,并在工厂(或其他一些长期存在的对象)中保留对它的引用,以便在处理 HTTP 请求后它保持活动状态。