2013-10-24 6 views
0

У меня есть приложение, в котором мне нужно ограничить количество активных подключений, и самый логичный способ сделать это для меня - просто подсчитать количество активных сеансов.Узел Express Session Count

Я искал «подсчет сеанса узла», но не нашел ничего полезного.

Возможно ли получить количество открытых сеансов в узле express?

Альтернативой было бы сохранить IP-адрес каждого подключенного клиента, но проблема с этим методом заключается в том, что ip-адрес нужно будет вручную удалить из хранилища данных.

Я думаю, если я использую redis в качестве хранилища данных, я мог бы использовать expire для достижения чего-то подобного.

set ip.192.168.42.1 true 
expire ip.192.168.42.1 60 
ttl ip.192.168.42.1 
etc etc 

Или есть лучший способ?

EDIT

Я попытался предложение использовать MemoryStore, но я не могу показаться, чтобы выяснить, как использовать его ??

var express = require("express"); 
    var MemoryStore = express.session.MemoryStore; 
    MemoryStore.prototype.length = function(fn) { 
     fn(null, Object.keys(this.sessions).length); 
    }; 

    MemoryStore.length(function(len) { 
     console.log('sessions:'+len); 
    }); 
+0

примечание стороны, если вы размещаете на сервере Unix/Linux вы можете легко ограничьте это на системном уровне. –

ответ

1

Используйте метод Store.length(fn). При хранении в памяти Connect по умолчанию, это написано так:

MemoryStore.prototype.length = function(fn) { 
    fn(null, Object.keys(this.sessions).length); 
}; 

Таким образом, вы могли бы назвать это так:

store.length(function(len) { 
    // we have len number of sessions 
}); 
Смежные вопросы