それぞれに複数のPCがあり、1つのWebサーバーにJSONリクエストでデータを取得する小さなswingアプリケーションを設定しました。Webサーバーにリクエストを送信せずにWebサーバーからデータを受信できますか?つまり、WebサーバーはJavaアプリケーションなしでデータを送信してこれを要求できますか?
3 に答える
これはいくつかの方法で実装できます。一般的な方法の1つは、接続を開き、クライアントアプリケーションで読み取りをブロックすることです。何かを受信すると、サーバーからのプッシュのように見えます。次に、プッシュを処理し、別のブロッキング読み取りを実行します。
もう1つのオプションは、Webサーバーに何かがあるかどうかを定期的にチェックすることです。アプリの観点からはリアルタイムプッシュのように見えるように、再試行間隔を十分な頻度で設定します。
HTTPを使用する場合、最も賢い方法は、リアルタイム要件を削除し、5秒ごとにサーバーをポーリングするスレッドを使用することだと思います。HTTP接続を常に開いたままにしておくと、要求プロセッサスレッドがブロックされ、使用できるクライアントの数が制限されるため、コストがかかります。
また、ほとんどリアルタイムではない更新が本当に必要な場合は、登録メカニズムのようなものに移行することを検討することもできます。クライアントでサーバーを開き、クライアントがサーバーにアドレスを登録した後、サーバーに更新をプッシュさせる必要があります。
十分なサーバーリソースがある場合は、WebSocketの使用を検討できます。
すべてのPCは、サーバーへのソケットを開くことができます。サーバーに送信する必要のあるソケットを開くと、PCの一意のIDになります。次に、このIDを、すべてのオンラインPCとソケットを含むデータベースまたはファイルに保存する必要があります。
次に、サーバーは、どのPCがオンラインであり、どのソケットを使用してこのPCと通信するかを認識します。この後、アプリケーションに応じて、このPCに必要な情報を送信できます。