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

gin*_*ger 5 c++ http poco-libraries

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

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

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

顺便说一句:我确实需要这种流程。关于不同的、可能是异步的方式(例如传递数据)的建议将不起作用。如果 Poco 做不到,我就必须更换它。

文档和一些实验都没有Poco::Net::HTTPServerRequest帮助Poco::Net::HTTPServerResponse我。

And*_*eyP 1

几个选项:

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