2013-11-22 3 views
5

socket.io redisstore 어댑터/저장소 (?)를 사용하면 모든 클라이언트를 '볼 수 있으며'socket.io 서버에 직접 연결되어 있지 않은 클라이언트도 '선택'할 수 있습니까? 또는 이것은 socket.io의 'rooms'기능으로 만 제한됩니까?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에서만 작동합니다. 따라서 연결된 사용자 목록을 얻으려면 직접해야합니다.

하지만 두 사용자간에 메시지를 전달하려는 경우 redis pub-sub는 서버 \ 프로세스간에 메시지를 전달할 때 매우 유용하기 때문에 표준 socket.io + redis 라이브러리에서는 문제가되지 않습니다.

관련 문제