Sebenarnya Anda hanya membuat klien redis baru untuk setiap koneksi jika Anda membuat instance klien pada acara "koneksi". Apa yang saya lebih suka lakukan saat membuat sistem obrolan adalah membuat tiga klien redis. Satu untuk memublikasikan, berlangganan, dan satu lagi untuk menyimpan nilai ke dalam redis.
misalnya:
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)
})
})
})