2011-12-21 58 views
1

我正在構建一個允許團隊協作的Web應用程序。也就是說,團隊中的用戶將能夠編輯共享數據,並且他們的編輯應該推送給其他連接的團隊成員。構建一個web應用程序以支持使用Socket.io的團隊協作

Socket.io房間是否實現這個合理的方式?

即(粗略地說):

  • 所有連接的小組成員將加入同一房間(在第一隊員連接動態創建的)。
  • 服務器收到的任何編輯將被廣播到房間(除了持續存在, 等)。
  • 在客戶端,接收到的任何編輯都將用於更新 瀏覽器中顯示的共享數據。

很明顯,它將需要以某種方式處理同時更新相同的數據。

這似乎是一個合理的方法嗎?

我可能需要考慮一些更強大的功能,例如在編輯會話期間讓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

感謝您的。所以,我說的是,在這種情況下(也許在像Trello這樣的應用程序中)使用Redis並不是要存儲用戶正在使用的實際數據。相反,它只是存儲實際的會話數據(即當前的socket.io房間等)。原因是在規模上你會有多個Node.js進程,他們都需要共享相同的會話數據? – William 2011-12-21 17:05:05

+0

那個原因之一,最重要的。另一個是Redis可以做pub-sub。 – alessioalex 2011-12-21 17:38:18

+0

RedisStore使用pub/sub來處理多個節點之間的會話數據同步,對嗎?即它仍然是我自定義的Socket.io代碼,它負責在上面的示例中向團隊成員廣播編輯內容? – William 2011-12-21 17:48:41

相關問題