[REDIS] socket.io에 RedisStore 사용에 예
REDISsocket.io에 RedisStore 사용에 예
나는 여러 프로세스 및 / 또는 서버에서 간단한 socket.io 응용 프로그램을 확장하려합니다.
Socket.io는 RedisStore을 지원하지만 나는 그것을 사용하는 방법을 혼동하고있다.
나는이 예제를 찾고 있어요 http://www.ranu.com.ar/post/50418940422/redisstore-and-rooms-with-socket-io
하지만 난 그 코드에 RedisStore를 사용하여 MemoryStore를 사용에서 어떤 다른 것이 이해가 안 돼요. 누군가가 나에게 그것을 설명 할 수 있습니까?
또한 socket.io 자신의 레디 스 클라이언트와 세트 작성 redisstore 대 사용하는 구성의 차이는 무엇인가 / 자신의 데이터를 얻을?
나는 Node.js를 새로운 해요, socket.io 내가 뭔가를 분명 놓친 경우 이렇게 지적하십시오 레디 스.
해결법
-
==============================
1.차이점은 기본 MemoryStore를 사용할 때 노동자들 사이에 IPC가 없기 때문에, 당신은 노동자에 방출하는 것이 모든 메시지는 같은 노동자에 연결된 클라이언트로 전송 될 것입니다. RedisStore를 사용하여, 당신의 메시지는 모든 근로자가 가입되어 레디 스 서버에 게시됩니다. 따라서, 메시지는 모든 근로자 및 연결된 모든 클라이언트에 의해 선택 및 방송된다.
차이점은 기본 MemoryStore를 사용할 때 노동자들 사이에 IPC가 없기 때문에, 당신은 노동자에 방출하는 것이 모든 메시지는 같은 노동자에 연결된 클라이언트로 전송 될 것입니다. RedisStore를 사용하여, 당신의 메시지는 모든 근로자가 가입되어 레디 스 서버에 게시됩니다. 따라서, 메시지는 모든 근로자 및 연결된 모든 클라이언트에 의해 선택 및 방송된다.
나는 RedisStore 속속들이 잘 알고 아니에요, 나는 확실히 모든 차이점에 대한 아니에요 그래서. 그러나 그 일을하는 것은 자신을 완벽하게 유효한 연습이 될 것입니다. 이 경우, 당신은 레디 스 서버에 모든 메시지를 게시 할 수 있고, 당신의 소켓 핸들러 사람들에게들을 수 있습니다. 그것은 아마도 당신을 위해 더 많은 작업이 될 것입니다,하지만 당신은 당신이 그것을 설정하는 방법을보다 효율적으로 제어 할 수있다. 나 자신과 비슷한 일을했습니다 :
// Publishing a message somewhere var pub = redis.createClient(); pub.publish("messages", JSON.stringify({type: "foo", content: "bar"})); // Socket handler io.sockets.on("connection", function(socket) { var sub = redis.createClient(); sub.subscribe("messages"); sub.on("message", function(channel, message) { socket.send(message); }); socket.on("disconnect", function() { sub.unsubscribe("messages"); sub.quit(); }); });
이것은 또한 당신이 다른 채널에 가입 / 게시하여 예를 들어, 자신을 라우팅 고급 메시지 돌봐 의미합니다. RedisStore, 당신은 socket.io 채널을 사용하여 무료로 그 기능을 얻을 (( "채널") io.sockets.of. 발광 (...)).
이와 잠재적으로 큰 단점은 socket.io 세션이 노동자 사이에 공유되지 않는 것입니다. 당신이 긴 폴링 전송 중 하나를 사용하는 경우 이것은 아마도 평균 문제를 것이다.
-
==============================
2.나는 데이터 저장소로 사용 레디 스에 작은 GitHub의 프로젝트를 설정합니다.
나는 데이터 저장소로 사용 레디 스에 작은 GitHub의 프로젝트를 설정합니다.
지금 당신은 여러 socket.io 서버 프로세스를 실행할 수 있습니다.
https://github.com/markap/socket.io-scale
-
==============================
3.당신이 'RedisStore'를 사용할 때의 차이는 그 자체가 레디 스에 소켓 하트 비트 및 세션 정보를 저장합니다 Socket.IO에, 당신은 Node.js를 함께 클러스터를 사용하는 경우, 사용자 클라이언트가 사용할 수 있습니다, 그입니다.
당신이 'RedisStore'를 사용할 때의 차이는 그 자체가 레디 스에 소켓 하트 비트 및 세션 정보를 저장합니다 Socket.IO에, 당신은 Node.js를 함께 클러스터를 사용하는 경우, 사용자 클라이언트가 사용할 수 있습니다, 그입니다.
레디 스없이, 클라이언트는 Node.js를 다음 시간을 처리 변경 될 수 있으므로 세션이 손실됩니다.
-
==============================
4.당신이 하나의 프로세스 만 볼 수이기 때문에, memStore 작동하지 않습니다 실행 Node.js를 인스턴스 클러스터가있는 경우의 차이는있다.
당신이 하나의 프로세스 만 볼 수이기 때문에, memStore 작동하지 않습니다 실행 Node.js를 인스턴스 클러스터가있는 경우의 차이는있다.
from https://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 효율성 : 레디 스 대 레디 스 문자열은 JSON을 표현하기 위해 해시? (0) | 2019.12.30 |
---|---|
[REDIS] '세션'표현을 사용하는 경우 정의되지는 / 세션 저장소에 대한 레디 스 (0) | 2019.12.30 |
[REDIS] 레디 스 + ActionController :: 라이브 스레드가 죽어하지 (0) | 2019.12.30 |
[REDIS] 어떻게 socket.io에서 레디 스 연결을 재사용? (0) | 2019.12.30 |
[REDIS] 어떻게 / 때 데이터 값의 변화를 고객에게 통지 nodejs으로 회원님의 사이트 레디 스를 사용 하는가? (0) | 2019.12.30 |