我正尝试使用Poco C++ lib的WebSocket类在我的服务器应用程序中构建一个漂亮的干净接口。Poco C++ Websocket服务器 - 阻止它在60秒后关闭
我的问题是,使用例如WebSocket的服务器应用中,插座60秒后关闭到客户端 - 我需要它持续更长的时间(想想+ 15分钟......)
我已经尝试设置HTTP层的超时时间为10分钟(3600秒),这对行为没有影响。
不幸的是,Poco的例子和文档有点薄 - 所以我希望这里有人能够提供帮助。
我正尝试使用Poco C++ lib的WebSocket类在我的服务器应用程序中构建一个漂亮的干净接口。Poco C++ Websocket服务器 - 阻止它在60秒后关闭
我的问题是,使用例如WebSocket的服务器应用中,插座60秒后关闭到客户端 - 我需要它持续更长的时间(想想+ 15分钟......)
我已经尝试设置HTTP层的超时时间为10分钟(3600秒),这对行为没有影响。
不幸的是,Poco的例子和文档有点薄 - 所以我希望这里有人能够提供帮助。
超时可以使用
ws.setReceiveTimeout(Poco::Timespan(days, hours, minutes, seconds, microseconds));
超时可能是由于螺纹(池),而不是本身对WebSocket设置。您可能想通过其构造函数设置不同的空闲时间。请参阅http://pocoproject.org/docs/Poco.ThreadPool.html
连接关闭的原因是因为WebSocket是在handler的堆栈上创建的。处理程序被称为每个请求,并且是短暂的。为了让它持续更长时间,您应该在堆上创建它并在工厂(或其他一些长寿命对象)中保持引用,以便在处理HTTP请求后保持活动状态。
如果有任何Ping功能发送给客户端? WebSockets协议它自己有PING和PONG OpCodes。图书馆可能会在不活动之后断开客户端连接。 – moka 2012-04-10 14:22:05
我确实认为这可能是这种情况 - 在这种情况下,我需要找到一种方法来防止这种行为。 我打算将WebSocket用于移动客户端 - 我想将流量限制在最低限度以节省电池寿命。 – justacodemonkey 2012-04-10 14:30:55
以及在Poco中为WebSocket检查函数setKeepAlive。 问题:您是使用浏览器连接服务器,还是使用Poco客户端WebSocket连接另一个Poco应用程序? 基于文档,Ping和Pong必须由应用程序开发人员处理。所以它不是由图书馆自己处理的。 – moka 2012-04-10 14:31:13