1

boost::pion の HTTPServer クラスを使用して、彗星のような機能を効率的に実装しようとしています。

基本的に、私の 'handleURI' 関数では、サーバーが応答する準備ができるまで (たとえば、別のユーザーが最初のユーザーにメッセージを送信して単純なコメット 'hello を使用するまで)、結果をクライアントに返すのを延期したいと考えています。世界のアプリケーション)。

私は何をすべきか?スタックに状態を置き、HTTPResponseWriter を作成せずにサイレントに終了しますか?

乾杯!

4

1 に答える 1

2

接続のタイムアウト ASIO イベントをセットアップして、20 分後に接続を取得できるようにします。Boost Pion についてはわかりませんが、ASIO では、接続が閉じられたときにキャッチする読み取りハンドラーと、接続が実際にタイムアウトしたときに警告するタイムアウト ハンドラーを登録する必要があります。ソケットで TCP キープアライブを有効にして、ソケットが消失した場合にソケットをいつ取得する必要があるかを検出します (ただし、tcp キープアライブは保証されていないため、それらだけに依存しないでください - すべてのクライアントが tcp キープアライブをサポートしているわけではありません)。タイマーについては、次のタイマーの例を確認してください。

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

于 2011-06-01T18:42:47.633 に答える