Redis-使用套接字复用redis请求

Redis-使用套接字复用redis请求

泛泛之交 发布于 2017-10-09 字数 861 浏览 1212 回复 1

下面部分代码段:使用套接字作为websocket,减少重复请求次数。

var io_put = io.listen(server);
buf = []
var re = require("redis");
var subscr = re.createClient();
io_input.on('connection',function(client){
console.log(client.request.headers.cookie);
subscr.get("...",function(err,replies){
});
subscr.on("message",function(channel,message){
var msg = { message: [client.sessionId, message] };
buf.push(msg);
if (buf.length > 15) buf.shift();
client.send(msg);
});

client.on('message', function(message){
});

client.on('disconnect', function(){
subscr.quit();
});
});

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-10-27 1 楼

其实只需要为每一个事件创建一个redis链接。例如创建一个聊天系统就只需要分配3个客户端链接。分出版,订阅和存入三个之一存入到redis。例如:

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

})