असल में आप प्रत्येक कनेक्शन के लिए केवल एक नया रेडिस क्लाइंट बना रहे हैं यदि आप क्लाइंट को "कनेक्शन" ईवेंट पर तुरंत चालू कर रहे हैं। चैट सिस्टम बनाते समय मैं जो करना पसंद करता हूं वह है तीन रेडिस क्लाइंट बनाना। एक प्रकाशन, सदस्यता लेने के लिए, और दूसरा मूल्यों को रेडिस में संग्रहीत करने के लिए।
उदाहरण के लिए:
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)
})
})
})