ユーザーがチャットルームを開くことができるサイトがあるとします。部屋が開かれると、ユーザは他の人を招待し、チャットすることができる。WebSocketサーバーのベストプラクティスは何ですか?
また、クライアントとの通信にWebSocketを使用したいと考えています。 ほとんどのサーバー側のWebSocket実装では、ブロードキャストを開始したホストではなく、接続されているすべてのホストにメッセージを送信する、connection.broadcast(message)
のような単純な機能があります。これは素晴らしい機能です。なぜなら、自分のためにすべてのクライアントのリストを保持して更新する必要がないからです。チャットルームの例の問題は、この場合、すべてのメッセージを全員にブロードキャストするのではなく、同じ部屋にいる他のクライアントにのみブロードキャストすることです。
これは、2つのオプションが私の葉:
- 順番にすべてのクライアントと部屋を追跡することを意味し、私自身
broadcastToRoom(room_id)
機能を、ロールバックします。 - 新しい部屋が作成されるたびに、(新しいポートに)サーバーの新しいインスタンスを生成します。
あなたはどうしますか?
私はすぐに離れて、各部屋に新しいサーバを産卵から敬遠したい - ではない完全なHTTPサーバが資源の浪費、ために設計されたものを、あなたのポートはすぐになりますあなたがその方向で何かを拡張することを決めたら、部屋間でデータをやりとりするのがもっと難しくなります –