Как повторно использовать соединение redis в socket.io?

Вот мой код, использующий 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 подключений. Это не выглядит красиво.

Можно ли повторно использовать соединение redis, если файлы cookie такие же? Поэтому, если кто-то открывает много вкладок браузера, это также считается открытым 1 соединением.

40
задан yojimbo87 21 April 2011 в 09:22
поделиться