我正在構建一個允許團隊協作的Web應用程序。也就是說,團隊中的用戶將能夠編輯共享數據,並且他們的編輯應該推送給其他連接的團隊成員。構建一個web應用程序以支持使用Socket.io的團隊協作
Socket.io房間是否實現這個合理的方式?
即(粗略地說):
- 所有連接的小組成員將加入同一房間(在第一隊員連接動態創建的)。
- 服務器收到的任何編輯將被廣播到房間(除了持續存在, 等)。
- 在客戶端,接收到的任何編輯都將用於更新 瀏覽器中顯示的共享數據。
很明顯,它將需要以某種方式處理同時更新相同的數據。
這似乎是一個合理的方法嗎?
我可能需要考慮一些更強大的功能,例如在編輯會話期間讓Redis數據庫保存共享數據(以定期「刷新」持久性DB)?
感謝您的。所以,我說的是,在這種情況下(也許在像Trello這樣的應用程序中)使用Redis並不是要存儲用戶正在使用的實際數據。相反,它只是存儲實際的會話數據(即當前的socket.io房間等)。原因是在規模上你會有多個Node.js進程,他們都需要共享相同的會話數據? – William 2011-12-21 17:05:05
那個原因之一,最重要的。另一個是Redis可以做pub-sub。 – alessioalex 2011-12-21 17:38:18
RedisStore使用pub/sub來處理多個節點之間的會話數據同步,對嗎?即它仍然是我自定義的Socket.io代碼,它負責在上面的示例中向團隊成員廣播編輯內容? – William 2011-12-21 17:48:41