2013-11-22 6 views
5

socket.io redisstoreアダプタ/ストア(?)を使用すると、すべてのクライアントを '参照'でき、socket.ioサーバーに直接接続されていないクライアントでも '選択'できますか?またはこれはsocket.ioの 'rooms'機能に限定されていますか?Socket.io redisstore

実際の例を挙げれば、同じチャットルーム内の2人のユーザーが2つの異なるsocket.ioノードに接続されている場合、コードを大きく変更することなく1人のユーザーから別のユーザーに囁くことができます単一のプロセス/サーバーの実装が既に有効な場合は、

私が尋ねる理由は、私がまだスケーリングに過度に関わっている私のプロジェクトの開発フェーズではないということです(node.jsスケーリングの背景にある概念にはまったく違いがありません私が慣れ親しんだもの(最初の完全なnode.jsプロジェクト))、しかし私はスケーラビリティが不可能であることが判明したインフラを構築する気がしません。

+0

ノードクラスタを使用している場合は、おそらくclusterhub、[socket.io clusterhub](https://github.com/fent/socket.io-clusterhub)などのデータを共有することもありますクラスタ全体で、そしてそれはもはや実際には問題にはなりませんが、私が知っている限り、依然としてユーザーを識別する部屋を使用しなければなりません。 – adeneo

答えて

1

Redisストア(/lib/stores/redis.js)は、サーバ間のメッセージ伝播のためにredis pub-subでのみ動作します。接続しているユーザーのリストを取得したい場合は、自分で行う必要があります。

しかし、2人のユーザー間でメッセージを渡したい場合、redis pub-subはサーバー\プロセス間でメッセージを渡すために非常に便利なので、標準のsocket.io + redisライブラリでは問題ありません。