私は最近 sockjs-tornado を調べていて、ソーシャル ネットワーキング サイトのチャット機能に取り組んでいます。スケーラブルなマルチルーム チャット機能を構築する際に使用される一般的な方法の感触をつかもうとしています。私が考えたいくつかの方法を概説し、フィードバックを得たいと思います. 現実の世界ではどのような方法が使用されていますか? これらの方法の長所と短所は何ですか?
前提条件:
- 実行中の竜巻
- sockjs-tornado lib の使用
- js用のsockjs-client lib
他のすべては開いています。
私が検討した方法:
ループ用
これが最も簡単な方法のようです。特定のルーム クラスにサブスクライブするユーザー クラスを作成します。ユーザーはルーム ID を含むメッセージ クラスを送信し、サーバーはループ内のメッセージをそのルームを購読しているユーザーにのみリダイレクトします。複雑さは明らかに少なくとも線形であるため、これは私には最悪のように思えます。(一度に 500 人のユーザーがそれぞれ 5 つのチャット ルームに接続しているとします。)
マルチタスク/複数のサーバー インスタンス
いつでも 500 のサーバー インスタンスを実行できるため、これも悪い考えのように思えます... 異なるポートですか? このメソッドの実装についてはよくわかりません。
ネイティブ サポート
確かに、socketio など、多くのライブラリにこれが組み込まれています。ただし、node.js のみがサポートされているため、これはオプションではありません。(私は tornado サーバーを使用しています。)特に Socks には、複数の「部屋」のサポートが組み込まれていません。
結論
リソース/ケース スタディ、および業界標準を探しています。どんな助けでも大歓迎です。