Cómo eliminar Redis en oyentes 'mensaje'

Un ejemplo típico de chat de Redis será algo como esto (verhttps://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js sólo para un ejemplo de este tipo):

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();
  });
});

Sin embargo, el problema aquí es que cuando unclient 'desconectar', elredis1.on('message',FUNC(){}) El oyente todavía está adjunto. La consola continuará imprimiendo elmessage. Si uno fuera a inspeccionar la lista de eventos deredis1, todavía encontrarían la función anónima escuchando.

El problema es que no hayredis1.off(...) función. Entonces, ¿cómo se puede desvincular / cancelar la suscripción / eliminar / eliminar la escucha de mensajes de redis?

Nota: Uno no puede simplemente hacer redis1.end (), ya que eso romperá la conexión de redis para otros usuarios conectados a websocket.

Respuestas a la pregunta(1)

Su respuesta a la pregunta