2011-12-21 7 views
1

チームコラボレーションを可能にするWebアプリケーションを構築しています。つまり、チーム内のユーザーは共有データを編集でき、その編集内容は他の接続されたチームメンバーにプッシュされます。Socket.ioを使用してチームコラボレーションをサポートするためのWebアプリケーションを構築する

Socket.ioルームはこれを達成するための合理的な方法ですか?

すなわち(大まかに):

  • すべて接続チームメンバーが同じ部屋を(動的に接続する第1チームメンバー上に作成された)参加します。
  • サーバーによって受信された編集内容は、(永続化に加えて) などのように、その部屋にブロードキャストされます。
  • クライアント側では、受け取った編集内容を使用して、ブラウザに表示される共有データを に更新します。

明らかに、同じデータに対して同時に更新を処理する必要があります。

これは合理的なアプローチのようですか?

編集セッション中に共有データを保持するRedisデータベース(一定の間隔で永続DBにフラッシュされる)など、より堅牢なものを検討する必要がありますか?

答えて

2

Socket.IO(RedisStore付き)とExpress.jsが必要です。 Socket.IOを使用すると、部屋を設定したり、部屋ごとのアクセスを認証されたユーザだけに制限することができます。Redisを使用すると、アプリケーションのスケールをプロセス外にすることができます。あなたが読んでため

便利なリンク:そのため

Handling Socket.IO, Express and sessions
Scaling Socket.IO
How to reuse redis connection in socket.io?
socket.io chat with private rooms
How to handle user and socket pairs with node.js + redis
Node.js, multi-threading and Socket.io

+0

感謝。だから、このケースでRedisを使用すると(そしておそらくTrelloのようなアプリケーションで)、ユーザーが実際に作業しているデータを格納していないと言うのは間違いありません。代わりに、単に実際のセッションデータ(つまり、現在のsocket.ioルームなど)を格納するだけです。その理由は、複数のNode.jsプロセスを持つことになり、すべて同じセッションデータを共有する必要があるからです。 – William

+0

その理由の一つは、最も重要です。もう一つは、レディスがパブ・サブをすることができるということです。 – alessioalex

+0

pub/subはRedisStoreによって複数のノード間のセッションデータの同期を処理するために使用されます。つまり、上記の例でチームメンバーに編集をブロードキャストするのは私のカスタムSocket.ioコードです。 – William

関連する問題