Poco :: Net HTTPServer:如何检测断开连接的客户端?

时间:2019-02-15 16:15:22

标签: c++ http poco-libraries

作为C ++应用程序的一部分,我正在基于Poco :: Net HTTP的http服务器上工作。使用Poco::Net::HTTPServer,然后使用Poco::Net::HTTPRequestHandler子类,实现void handleRequest(Poco::Net::HTTPServerRequest &req, Poco::Net::HTTPServerResponse &resp),这非常简单。使用这种方法,过程可能会变得很耗时,甚至在某些情况下可能会无休止地运行。

浏览器通过ajax请求(XMLHttpRequest,有时是abort()这些请求(关闭连接?)从Web应用程序内部使用这些服务器。

我如何在handleRequest(...)内部检测到这种情况以停止处理?

btw:我确实需要这种流程。关于不同的可能异步方法的建议,例如传递数据将不起作用。如果Poco无法做到这一点,我必须将其替换。

无论是文档还是对Poco::Net::HTTPServerRequestPoco::Net::HTTPServerResponse的实验都没有帮助我。

1 个答案:

答案 0 :(得分:0)

几个选项:

  1. 您可以尝试“Poco::Net::Socket::select()”,但它受操作系统限制。
  2. 切换到带有 ping/pong 心跳的“Poco::Net::WebSocket”。如果套接字关闭,“receiveFrame()”将抛出异常。