[REDIS] 레디 스 펍 서브 또는 Socket.IO의 방송
REDIS레디 스 펍 서브 또는 Socket.IO의 방송
나는이 조각을 보았다 :
io.sockets.on('connection', function(socket) {
const subscribe = redis.createClient();
const publish = redis.createClient();
socket.on('publish', function(channel, data) {
publish.publish(channel, data);
});
socket.on('psubscribe', function(channel) {
subscribe.psubscribe(channel);
});
subscribe.on("pmessage", function(pattern, channel, message) {
socket.emit('message', { channel: channel, data: message });
});
});
$(".action").click(function() {
socket.emit('publish', 'game.#{gameid}.action.' + $(this).data('action'),
JSON.stringify({ nick: "#{nick}", ts: Date.now() })
);
그리고 그 이유를 궁금하네요? Socket.IO는 자신의 방송 메커니즘을 가지고하지 않습니다? 왜 Socket.IO를 통해 레디 스 '펍 서브를 선택 하는가? 우리는 다음과 같이 수행 할 수 없습니다
io.sockets.on('connection', function(socket) {
socket.on('action', function(channel, data) {
socket.broadcast.to(channel).emit(data)
});
});
레디 스를 사용하는 이유가 있다면, 어떤 도움이 될 것인가? 고집?
해결법
-
==============================
1.그 이유는 내 실시간 활동 스트림 프로젝트에 Socket.io와 레디 스 펍 하위를 사용하기로 결정했습니다 (http://blog.cloudfoundry.com/2012/06/05/node-activity-streams-app-2/) 때문이었다 여러 개의 웹 서버 (Heroku가에 클라우드 파운드리 또는 동력계에 인스턴스)를 가지고 싶었다. 지금까지 내가 볼 수있는 바와 같이, Socket.io 그것이 아마도 다른 웹 서버에 연결하는 클라이언트에 브로드 캐스트 할 수 있도록하는 방법, (한 웹 서버의) 메모리에 메시지를 저장?
그 이유는 내 실시간 활동 스트림 프로젝트에 Socket.io와 레디 스 펍 하위를 사용하기로 결정했습니다 (http://blog.cloudfoundry.com/2012/06/05/node-activity-streams-app-2/) 때문이었다 여러 개의 웹 서버 (Heroku가에 클라우드 파운드리 또는 동력계에 인스턴스)를 가지고 싶었다. 지금까지 내가 볼 수있는 바와 같이, Socket.io 그것이 아마도 다른 웹 서버에 연결하는 클라이언트에 브로드 캐스트 할 수 있도록하는 방법, (한 웹 서버의) 메모리에 메시지를 저장?
게시물을 확인하고 도움이된다면 알려주세요
-
==============================
2.레디 스 적어도 두 가지 이유가 여기에 사용됩니다. 첫 번째는 psubscribe에 패턴 매칭에 따라 메시지를 선택 할 수있는 포함하여 게시 및 구독 메커니즘으로 정말 잘 작동한다는 것입니다. 두 번째 이유는 다른 클라이언트의 용이성이 게시하고 레디 스 메커니즘을 통해 가입 할 수있다. 즉, 단지 편리 불가능하다고 말할 수 없습니다. Node.js를의 asynchronisity과 결합이 강력한 파트너십을한다.
레디 스 적어도 두 가지 이유가 여기에 사용됩니다. 첫 번째는 psubscribe에 패턴 매칭에 따라 메시지를 선택 할 수있는 포함하여 게시 및 구독 메커니즘으로 정말 잘 작동한다는 것입니다. 두 번째 이유는 다른 클라이언트의 용이성이 게시하고 레디 스 메커니즘을 통해 가입 할 수있다. 즉, 단지 편리 불가능하다고 말할 수 없습니다. Node.js를의 asynchronisity과 결합이 강력한 파트너십을한다.
그것은 물론 유일한 해결책은 아니지만 오히려 잘 작동하는 것 같다 하나.
from https://stackoverflow.com/questions/10167206/redis-pub-sub-or-socket-ios-broadcast by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스에 대한 MySQL의에 phpMyAdmin을 동등한? (0) | 2020.01.05 |
---|---|
[REDIS] 레디 스 캐시에있는 목록 요소를 저장하는 방법 (0) | 2020.01.05 |
[REDIS] Heroku가에 레디 스를 배포하는 것은없는 연결 (0) | 2020.01.05 |
[REDIS] 키 이벤트가 만료 (0) | 2020.01.05 |
[REDIS] 레디 스에서 여러 키 값 가져 오기 (0) | 2020.01.05 |