1

我正在尝试使用 boost::pion 的 HTTPServer 类有效地实现类似彗星的功能。

基本上,在我的“handleURI”函数中,我想推迟将结果返回给客户端,直到服务器准备好响应(例如,直到另一个用户向第一个用户发送消息,使用简单的彗星'hello世界的应用)。

我该怎么办?将状态放在堆栈上,然后静默退出,而不创建 HTTPResponseWriter?

干杯!

4

1 回答 1

2

为您的连接设置一个超时 ASIO 事件,以便您可以在 20 分钟或类似的合理时间后获得连接。我不知道 Boost Pion,但在 ASIO 中,您希望注册一个读取处理程序,该处理程序在连接关闭时捕获,并注册一个超时处理程序,以在连接实际超时时提醒您。在您的套接字上启用 TCP keep alives 以检测在套接字消失的情况下应该何时获取套接字(尽管 tcp keep alives 不是保证,因此不要完全依赖它们 - 并非所有客户端都支持 tcp keep alives)。至于计时器,请查看以下计时器示例:

https://github.com/sean-/Boost.Examples/blob/master/asio/timer/timer.cc

于 2011-06-01T18:42:47.633 回答