2013-11-22 40 views
5

使用socket.io redisstore適配器/存儲(?),是否有可能「查看」所有客戶端,並且「選擇」即使是不直接連接到您的socket.io服務器的客戶端?或者,這是否僅限於socket.io的「房間」功能?Socket.io redisstore

舉一個實際的例子,同一個聊天室中的兩個用戶連接到兩個不同的socket.io節點,redisstore適配器/存儲是否可以讓一個用戶竊聽對方,而不會對代碼進行大的更改如果你已經有一個單一的流程/服務器實施?

我問的原因是我目前還沒有處於我的項目的開發階段,過度關注縮放(我也沒有時間深入瞭解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一起用於服務器之間的消息傳播。所以如果你想獲得連接用戶列表 - 你必須自己做。

但是,如果你想在兩個用戶之間傳遞消息 - 我認爲這對標準的socket.io + redis庫來說不會有問題,因爲redis pub-sub在服務器\進程之間傳遞消息非常有用。

相關問題