ですから、私が計画しているアプリケーションのユースケースから始めるのが最善だと思います。
私は、ローカル ネットワーク内の誰もが Web ページを介して音楽をアップロードし、特定の曲に投票できる Audioplayer を作成することを計画しています。最も多くの票を獲得した曲が再生され、視覚化されます。また、Web インターフェイスを介して現在の曲を再生および一時停止できる必要があります。
したがって、私の解決策は 2 つのアプリケーションを作成することです。最初のものはプレイヤーで、曲を再生して視覚化し、データベースから次の曲を取得する必要があります。もう 1 つの部分は、プレーヤーへのファイルのアップロード、ID3 タグの処理、および最終的なデータベースへの挿入を処理するサーブレットです。
ここまでは順調ですね。ここで、再生/一時停止イベントと、視覚化を変更する可能性のあるイベントをすばやく伝達する方法が必要です。私は複数の解決策を考え出しました:
- Apache ActiveMQ で Java Message Services を使用して、フロントエンドとビジュアライゼーションの間でイベントを交換します。(MessageListeners で可能なはずなので、応答は高速ですが、追加のテクノロジとして Apache ActiveMQ が必要です)
- このようなコマンドを Table に書き込み、プレーヤーに 0.5 秒ごとにスレッドでチェックしてもらいます (欠点: 間隔が短く、サーバー PC / Raspberry Pi に負荷がかかるため、ラグが発生する可能性があります)。
- ソケット
これらの解決策のすべてが理想的ではないように思われるため、このコミュニケーションを解決するためのより良い方法はありますか?