2013-01-16 5 views
1
사용자가이 코드 블록이 immediatley 실행되는 페이지 전환 현재 때마다

전환하면 차단을 실행하려면 해달라고 :Node.js를 (Socket.io) 나는 사용자가 페이지

// when the user disconnects.. perform this 
socket.on('disconnect', function(){ 
    delete SiteRooms[socket.username]; 
    io.sockets.emit('updateusers', usernames); 
    io.sockets.emit('updateroomusers', SiteRooms); 
}); 

내가 실행하지 않으 이 경우 사용자가 내 사이트의 페이지 만 전환하는 경우이 작업을 수행 할 수있는 방법이 있습니까?

나는 타이머를 생각하고 있었는데 아마 50 초로 설정할 수 있었을 것이다. 그러나 이것이 좋은 해결책인지 또는 실제 코드를 작성하는 방법을 모르겠다. ..

아이디어가 있으십니까?

+0

단절 재 연결을 필요로하지 않도록 단일 페이지 앱을 고려하십시오. 그렇지 않으면 socket.io를 권한 부여와 함께 사용하고 세션 저장소와 함께 표현하여 세션 상태를 검색하십시오. – almypal

답변

0

대신 페이지 콘텐츠를 변경하는 스크립트로 링크를 변경할 수 있습니다. 나는 경험이 없지만 JADE가 그런 일을하는 데 도움이된다고 생각합니다. 당신은 GitHub의에서 몇 가지 예제를 가지고 :

https://github.com/visionmedia/jade

나는 대체 블록 당신을위한 해결책이 될 수 있다고 생각.

+0

Jade는 템플릿 엔진 일뿐입니다. 콘텐츠를로드하는 방법에는 아무런 영향이 없습니다. 블록 교체에 대한 귀하의 의견은 ''과 같이 사이트의 다른 섹션에 코드를 쉽게 추가 할 수 있도록 서로 중첩 된 템플릿 용입니다. – Brad

+1

그는 아마 단일 페이지 응용 프로그램을 말하는 것이고 좋은 대안으로 보입니다. – almypal

1

이벤트 실행이 정확합니다. 사용자가 페이지를 전환하면 해당 페이지의 전체 실행 컨텍스트가 끝나고 모든 스크립트가 중지됩니다. 여기에는 Socket.IO의 클라이언트 코드가 포함됩니다.

몇 가지 선택 사항이 있습니다. 하나의 선택은 AJAX로 페이지 내용을로드하는 것입니다. 이것은 항상 이상적이지는 않습니다 ... 귀하의 사이트가하는 일과 그것이 구축되는 방법에 달려 있습니다.

또 다른 옵션은 지연을 직접 구현하는 것입니다. 사용자 데이터를 보관할 때마다 원하는 시간 (초) 동안 제한 시간을 보유하는 속성을 해당 객체에 추가하기 만하면됩니다. 사용자가 다시 연결하면 시작되기 전에 시간 초과를 지우십시오.

관련 문제