복붙노트

[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. ==============================

    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. ==============================

    2.레디 스 적어도 두 가지 이유가 여기에 사용됩니다. 첫 번째는 psubscribe에 패턴 매칭에 따라 메시지를 선택 할 수있는 포함하여 게시 및 구독 메커니즘으로 정말 잘 작동한다는 것입니다. 두 번째 이유는 다른 클라이언트의 용이성이 게시하고 레디 스 메커니즘을 통해 가입 할 수있다. 즉, 단지 편리 불가능하다고 말할 수 없습니다. Node.js를의 asynchronisity과 결합이 강력한 파트너십을한다.

    레디 스 적어도 두 가지 이유가 여기에 사용됩니다. 첫 번째는 psubscribe에 패턴 매칭에 따라 메시지를 선택 할 수있는 포함하여 게시 및 구독 메커니즘으로 정말 잘 작동한다는 것입니다. 두 번째 이유는 다른 클라이언트의 용이성이 게시하고 레디 스 메커니즘을 통해 가입 할 수있다. 즉, 단지 편리 불가능하다고 말할 수 없습니다. Node.js를의 asynchronisity과 결합이 강력한 파트너십을한다.

    그것은 물론 유일한 해결책은 아니지만 오히려 잘 작동하는 것 같다 하나.

  3. from https://stackoverflow.com/questions/10167206/redis-pub-sub-or-socket-ios-broadcast by cc-by-sa and MIT license