シンプルな HTTP ポストを使用して REST API を介してサーバー アプリケーションと通信するデスクトップ クライアント アプリケーションがあります。現在、X 分ごとにクライアントをポーリングしていますが、データをより頻繁に更新したいと考えています。サーバーに新しいデータをクライアントに通知させることは可能ですか?それとも、それは HTTP サーバーの目的の範囲外ですか? これにアプローチする最善の方法についての考えは大歓迎です。ありがとう!
2 に答える
サーバー側でphpを使用してロングポーリングを実装する方法を非常に基本的な例で説明している、次のStack Overflow投稿に対する受け入れられた回答を確認することをお勧めします。
ロング ポーリングを使用すると、クライアント アプリケーションは HTTP サーバーへの要求を無限のタイムアウト (または非常に長いタイムアウト) で開始します。新しいデータが利用可能になるとすぐに、サーバーはアクティブな接続の準備ができていることを検出するため、データをすぐにプッシュできます。従来のポーリングでは、アプリケーションが新しいポーリングを開始するまで待つ必要があり、さらに新しいデータが送信される前にサーバーに到達するためのネットワーク遅延が発生します。
その後、データが送信されると接続が閉じられますが、サーバーへの接続を常に開いておくために、アプリケーションはすぐに新しい接続を開く必要があります。実際には、アクティブな接続が存在しない非常に小さなギャップがありますが、これは多くのアプリケーションではほとんど無視できます。
サーバー側で HTTP 接続を開いたままにしておくと、更新があるたびにデータを送信した後、接続をフラッシュして実際にデータを送信できます。ただし、何万もの接続が必要な場合、TCP/IP スタックで問題が発生する可能性があります。