Jak usunąć Redis na odbiorcach wiadomości

Typowy przykład czatu Redis będzie wyglądał mniej więcej tak (patrzhttps://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js tylko dla jednego takiego przykładu):

io.sockets.on('connection', function (client) { //websocket connection

  redis1.subscribe("chat");

  redis1.on("message", function(channel, message) {
      console.log(message);
      client.send(message);
  });

  client.on('message', function(msg) {
    redis2.publish("chat",msg.message);  
  });

  client.on('disconnect', function() {
      redis1.quit();
  });
});

Problemem jest jednak to, kiedy aclient „odłącz”redis1.on('message',FUNC(){}) słuchacz jest nadal dołączony. Konsola będzie nadal drukowaćmessage. Gdyby sprawdzić inspektorów wydarzeńredis1, wciąż odnajdują anonimową funkcję słuchania.

Problem polega na tym, że nie maredis1.off(...) funkcjonować. Jak więc odłączyć / anulować / usunąć / usunąć słuchacza wiadomości redis?

Uwaga: Nie można po prostu wykonać redis1.end (), ponieważ spowoduje to przerwanie połączenia redis dla innych użytkowników podłączonych do sieci.

questionAnswers(1)

yourAnswerToTheQuestion