So entfernen Sie Redis bei 'Nachrichten'-Listenern

Ein typisches Redis-Chat-Beispiel sieht ungefähr so ​​aus (siehehttps://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js für nur ein Beispiel):

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

Das Problem hierbei ist jedoch, dass wenn aclient 'trennen', dieredis1.on('message',FUNC(){}) Hörer ist noch angehängt. Die Konsole druckt weiterhin diemessage. Wenn man die Eventlistener vonredis1würde sie trotzdem die anonyme funktion hören finden.

Das Problem ist, dass es keine gibtredis1.off(...) Funktion. Also, wie kann man den Redis Message Listener entbinden / abbestellen / löschen / entfernen?

Hinweis: Man kann nicht einfach redis1.end () ausführen, da dies die Redis-Verbindung für andere mit dem Websocket verbundene Benutzer unterbricht.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage