2012-07-16 6 views
0

나는 업데이트 할 (또는 교체?) 그 기록을 것업데이트 몽고 문서

function logout(id, disconnect) { 

다른 이벤트를 가지고 그래서 같은

io.sockets.on('connection', function (socket) { 
    connectLog(socket.handshake.address.address); 

function connectLog(ipAddress) { 
    db.collection('tracking', function (err, collection) { 
     var currentTime = new Date(); 
     var doc={"ip":ipAddress, "connect": currentTime, "culture": "en" }; 
     collection.insert(doc, function() { }); 
    }); 

} 

으로 몽고의 DB에 문서를 삽입하고 disconnect: (time)을 추가하십시오. 이 일을 어떻게 하죠? 이렇게하면 내가 언제 사람이 연결하는지, 그리고 그들이 채팅에서 끊을 때를 알 수 있습니다. 나는 그들의 정확한 분리 시간

내가 알 수 socket.io 사용하고

암시 적 연결을 끊 대 명시에 대해이 글을 읽을 사전에

답변

1

먼저 감사합니다 Socket.io: How to handle closing connections?. 기본적으로 명시 적 로그 아웃 처리기 (사용자가 명시 적으로 로그 아웃 할 기회가없는 경우)는 연결 해제 처리기와 동일한 코드를 호출해야합니다.

socket.on('disconnect', handleDisconnect) 

을 그리고 분리/로그 아웃 처리기에서 해당 사용자에 대한 가장 최근의 연결 문서를 찾아서 업데이트 할 수 있습니다 :

은 그래서 로그 아웃 코드뿐만 아니라, 당신은 또한 할 것 .

collection.findAndModify(
{"address" : address}, //same address 
[['connect', 'descending']], //the most recent, findAndModify only changes the first doc 
{$set: {disconnect: currentTime}}, //set the disconnect time 
function(err, object){/*deal with errors*/} 
) 
+0

대단히 감사합니다. – Jordan