我正在尝试使用boost :: pion的HTTPServer类有效地实现类似Comet的功能。
基本上,在我的'handleURI'函数中,我想将返回的结果推迟到客户端,直到服务器准备好响应(例如,直到另一个用户向第一个用户发送消息,使用一个简单的彗星'你好世界'应用程序)。
我该怎么办?将状态放在堆栈上,然后静默退出,而不创建HTTPResponseWriter?
干杯!
答案 0 :(得分:2)
为您的连接设置超时ASIO事件,以便您可以在20分钟后或类似的事情之后获得连接。我不知道Boost Pion,但是在ASIO中你需要注册一个读取处理程序,该处理程序在连接关闭时捕获,并且一个超时处理程序在连接实际超时时提醒您。在你的套接字上启用TCP保持活动,以便在它刚刚消失的情况下检测套接字何时被收获(尽管tcp保持alives不是保证,所以不要完全依赖它们 - 并非所有客户端都支持tcp keep alives)。至于计时器,请查看以下计时器示例:
https://github.com/sean-/Boost.Examples/blob/master/asio/timer/timer.cc