2013-10-24 6 views
0

활성 연결 수를 제한해야하는 응용 프로그램이 있으며이 작업을 수행하는 가장 논리적 인 방법은 단순히 활성 세션 수를 계산하는 것입니다.노드 익스프레스 세션 수

"node express session count"를 (를) 검색했지만 유용한 정보를 찾지 못했습니다.

노드 익스프레스에서 열린 세션 수를 얻을 수 있습니까?

대신 각 연결된 클라이언트의 IP 주소를 저장하는 것이지만이 방법의 문제점은 IP 주소를 데이터 저장소에서 수동으로 제거해야한다는 것입니다.

데이터 저장소로 redis를 사용하는 경우 만료를 사용하여 비슷한 결과를 얻을 수 있다고 생각합니다.

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

더 좋은 방법이 있습니까?

편집

나는 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

사이드 노트는 유닉스/리눅스 서버에서 호스팅하는 경우, 당신은 쉽게 할 수 시스템 레벨에서이를 제한하십시오. –

답변

1

Store.length(fn) 메서드를 사용하십시오. 기본 연결 메모리 저장에서, 그것은 다음과 같이 쓰여 :

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

그래서 당신이 이런 식으로 부를 것이다 :

store.length(function(len) { 
    // we have len number of sessions 
}); 
관련 문제