チームコラボレーションを可能にするWebアプリケーションを構築しています。つまり、チーム内のユーザーは共有データを編集でき、その編集内容は他の接続されたチームメンバーにプッシュされます。Socket.ioを使用してチームコラボレーションをサポートするためのWebアプリケーションを構築する
Socket.ioルームはこれを達成するための合理的な方法ですか?
すなわち(大まかに):
- すべて接続チームメンバーが同じ部屋を(動的に接続する第1チームメンバー上に作成された)参加します。
- サーバーによって受信された編集内容は、(永続化に加えて) などのように、その部屋にブロードキャストされます。
- クライアント側では、受け取った編集内容を使用して、ブラウザに表示される共有データを に更新します。
明らかに、同じデータに対して同時に更新を処理する必要があります。
これは合理的なアプローチのようですか?
編集セッション中に共有データを保持するRedisデータベース(一定の間隔で永続DBにフラッシュされる)など、より堅牢なものを検討する必要がありますか?
感謝。だから、このケースでRedisを使用すると(そしておそらくTrelloのようなアプリケーションで)、ユーザーが実際に作業しているデータを格納していないと言うのは間違いありません。代わりに、単に実際のセッションデータ(つまり、現在のsocket.ioルームなど)を格納するだけです。その理由は、複数のNode.jsプロセスを持つことになり、すべて同じセッションデータを共有する必要があるからです。 – William
その理由の一つは、最も重要です。もう一つは、レディスがパブ・サブをすることができるということです。 – alessioalex
pub/subはRedisStoreによって複数のノード間のセッションデータの同期を処理するために使用されます。つまり、上記の例でチームメンバーに編集をブロードキャストするのは私のカスタムSocket.ioコードです。 – William