Вот мой код, использующий socket.io в качестве WebSocket и backend с 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 подключений. Это не выглядит красиво.
Можно ли повторно использовать подключение redis, если файлы cookie совпадают?
Так что, если кто-то откроет много вкладок браузера, также будет считаться открытым 1 соединение.