2011-11-02 3 views
1

아래의 node.js 코드와 함께 socket.io와 Redis를 사용하고 있습니다.redi를 socket.io와 함께 사용 - 각 클라이언트를 업데이트하는 방법은 무엇입니까?

저는 분명히 여기 바보 같지만, 왜 Redis 이벤트는 연결하는 첫 번째 사용자에게만 발생하는지 이해할 수 없습니다.

페이지를 여는 각 사용자에 대해 NEW CONNECTION 콘솔 메시지가 다시 표시되지만, 나는 처음 사용자와 함께 REDIS 콘솔 메시지 만 볼 수 있습니다.

io = io.listen(app); 
client.flushall(); 
io.sockets.on('connection', function (socket) { 

    // Update Redis with information about this connection. 
    console.log('*************** NEW CONNECTION'); 
    client.multi() 
     .hmset("user:" + user_id, "nickname", nick) 
     .sadd("chatroom:" + room_id, user_id) 
     .exec(); 

    // Check that the Redis record was set. 
    client.smembers("chatroom:" + room_id, function (err, data) { 
      if (err) { console.log(err); return; } 
      console.log('REDIS CALL FOR chatroom:' + room_id, data); 
    }); 
}); 

내가 각 클라이언트에 대해 io.sockets.on 내부에 별도의 레디 스 인스턴스를 생성해야합니까 - 만일 그렇다면,이 규모 것?

그렇지 않으면 무엇이 잘못 되었습니까?

+0

어쩌면 redis 연결을 차단하고 있습니까? – thejh

+1

스타일 팁 : 당신은'if (err) {console.log (err); 반환; }''if (err) return console.log (err); ' – thejh

+0

@thejh thanks :) – Richard

답변

4

알 수 있습니다. 나는 어리 석다.

나는 socket.on('disconnect'...) 안에 client.quit()을 호출했는데, 분명히 Redis 클라이언트가 모두 삭제되었습니다. DUH.

앞으로 도움이되기를 바랍니다.