这是我的代码,使用socket.io作为WebSocket和后端使用pub/sub redis。
var io = io.listen(server),
buffer = [];
var redis = require("redis");
var subscribe = redis.createClient(); **<--- open new connection overhead**
io.on('connection', function(client) {
console.log(client.request.headers.cookie);
subscribe.get("..", function (err, replies) {
});
subscribe.on("message",function(channel,message) {
var msg = { message: [client.sessionId, message] };
buffer.push(msg);
if (buffer.length > 15) buffer.shift();
client.send(msg);
});
client.on('message', function(message){
});
client.on('disconnect', function(){
subscribe.quit();
});
});
每个新的io请求都会创建一个新的redis连接。如果有人用100个标签打开浏览器,那么redis客户端就会打开100个连接。这看起来不太好。
如果cookie相同,是否可能重用redis连接?因此,如果有人打开多个浏览器选项卡,也被视为打开1个连接。