2012-07-31 4 views
1

Meteor 프레임 워크를 사용하여 실시간 연결 수를 기록하는 가장 좋은 방법은 무엇입니까? 나는 온라인으로 사용자를 실시간으로 공유 할 수있는 요구 사항을 가지고 있으며 컬렉션을 만들고 각각의 사용자에 대해 초기화 할 때 레코드를 바꾸는 데 의존해 왔지만 카운트가 재설정 된 것 같습니다. 당신이 "컬렉션의 새로운 수를 삽입 모음에서 제거 카운트 값을 얻을"신뢰 할 때유성 연결 수

Counts = new Meteor.Collection "counts" 

if Meteor.is_client 
    if Counts.findOne() 
    new_count = Counts.findOne().count + 1 
    Counts.remove {} 
    Counts.insert count: new_count 
    Template.visitors.count = -> 
    Counts.findOne().count 

if Meteor.is_server 
    reset_data = -> 
    Counts.remove {} 
    Counts.insert count: 0 
    Meteor.startup -> 
    reset_data() if Counts.find().count() is 0 

답변

1

당신은 경쟁 조건을 가지고있다. 클라이언트는 동시에 값 X를 얻을 수 있습니다. 그것은가는 길은 아닙니다.

대신 각 클라이언트가 컬렉션에 "자체"를 삽입하도록하십시오. 고유 한 ID와 삽입 된 "시간"을 넣으십시오. Meteor.Method를 사용하여 하트 비트를 구현하고이 "시간"을 새로 고침하십시오. 너무 오래 걸린 클라이언트를 컬렉션에서 삭제할 수 있습니다. 유휴 클라이언트를 제거하려면 서버의 타이머를 사용하십시오.

여기에서 확인할 수 있습니다. https://github.com/francisbyrne/hangwithme/blob/master/server/game.js