2013-11-22 25 views
5

Korzystając z adaptera/sklepu (?) Socket.io redisstore, możliwe jest "zobaczenie" wszystkich klientów i "wybranie" nawet klienta, który nie jest bezpośrednio podłączony do serwera socket.io? Czy jest to ograniczone tylko do funkcji 'room' w socket.io?Socket.io redisstore

Aby dać praktyczny przykład, dwóch użytkowników w tym samym pokoju rozmów sieciowych jest połączonych z dwoma różnymi węzłami socket.io, czy adapter/sklep programu redisstore umożliwia szeptanie od jednego użytkownika do drugiego bez wielkich zmian w kodzie jeśli masz już działającą pojedynczą implementację procesu/serwera?

Powodem, dla którego pytam, jest to, że nie jestem jeszcze w fazie projektowania mojego projektu, aby nadmiernie zajmować się skalowaniem (ani nie mam czasu, aby zagłębić się w koncepcje dotyczące skalowania node.js, które wygląda zupełnie inaczej z tego, do czego przywykłem (pierwszy pełny projekt node.js teraz)), ale Nie mam ochoty budować infrastruktury, która okazuje się niemożliwa do skalowania.

+0

Jeśli używasz klastrów węzłów, prawdopodobnie będziesz także używać czegoś takiego jak clusterhub, a może [socket.io clusterhub] (https://github.com/fent/socket.io-clusterhub) do udostępniania danych w klastrach, a potem już nie jest to problem, ale o ile wiem, nadal trzeba korzystać z pokoi, aby identyfikować użytkowników itp. – adeneo

Odpowiedz

1

Redis store (/lib/stores/redis.js) działa tylko z redis pub-sub dla propagacji wiadomości między serwerami. Więc jeśli chcesz uzyskać listę podłączonych użytkowników - musisz zrobić to sam.

Ale jeśli chcesz przekazać wiadomości między dwoma użytkownikami - myślę, że nie będzie to problemem z standardową biblioteką socket.io + redis, ponieważ redis pub-sub jest bardzo przydatny do przekazywania wiadomości między serwerami \ procesami.