Redis
 sql >> Base de données >  >> NoSQL >> Redis

Comment réutiliser la connexion redis dans socket.io ?

En fait, vous ne créez un nouveau client Redis pour chaque connexion que si vous instanciez le client sur l'événement "connexion". Ce que je préfère faire lors de la création d'un système de chat, c'est de créer trois clients Redis. Un pour la publication, l'abonnement et un pour stocker des valeurs dans redis.

par exemple :

var socketio = require("socket.io")
var redis = require("redis")

// redis clients
var store = redis.createClient()
var pub = redis.createClient()
var sub = redis.createClient()

// ... application paths go here

var socket = socketio.listen(app)

sub.subscribe("chat")

socket.on("connection", function(client){
  client.send("welcome!")

  client.on("message", function(text){
    store.incr("messageNextId", function(e, id){
      store.hmset("messages:" + id, { uid: client.sessionId, text: text }, function(e, r){
        pub.publish("chat", "messages:" + id)
      })
    })
  })

  client.on("disconnect", function(){
    client.broadcast(client.sessionId + " disconnected")
  })

  sub.on("message", function(pattern, key){
    store.hgetall(key, function(e, obj){
      client.send(obj.uid + ": " + obj.text)
    })
  })

})