私はJavaベースのチャットサーバーを書いていますが、現在私のデザインは以下に基づいています:-チャットルームの人がメッセージを送信すると、サーバー側のチャットルームクラスはループ内のすべての参加者に同じメッセージを送信します. ループ内の個々の参加者に対してネットワーク呼び出しが行われているため、これは明らかに不適切な設計です。したがって、たとえば、チャット ルームに 10 人いるとします。1 人のユーザーがメッセージを送信すると、チャットルーム クラスはループ内で同じメッセージを 10 人全員に送信します。たとえば、ループ内の 5 人目の接続が不安定な場合、6 人目から 10 人目がメッセージを見る時間に影響します。
部屋ごとにユニキャストからマルチキャストに移行する場合、チャット ルームごとにプライベート マルチキャスト グループの IP を取得するにはどうすればよいですか? また、チャット ルームごとに個別のグループを用意するのはやり過ぎのようです。主な問題の 1 つは、ループ経由でルーム内のユーザーに返信したときに、ソケット接続を介してデータを送信するメソッドがブロックされていたことです。したがって、非ブロッキング NIO ソケットを使用し、ループ内の受信者にメッセージを送信すると、問題は解決するのでしょうか? ルーム内の受信者へのデータの送信を最適化するために実行できる他の巧妙なトリックはありますか?