2012-02-18 3 views
2

사용자가 더 이상 사이트에 없기 때문에 소셜 네트워크의 데이터베이스를 업데이트하는 좋은 방법을 얻으려고합니다. 스크립트가 업데이트를 위해 활성화 될 수 없습니다. 데이터베이스를 생성하고 사이트의 다른 사용자에게 이벤트를 방출하므로 클라이언트 사이드 스크립팅에 의존하는 대신 서버에서이를 수행하는 방법이 필요하다고 생각합니다.소켓 IO jquery 이벤트 서버 자체에

지금 나는 (여전히 사용자에 의해로드) 스크립트의 서버 측 부분에 이런 일을하고 있어요

socket.on('disconnect', function() { 
socket.broadcast.emit('disconnect', { data : session}); 
}); 
이 다시 사용자 측 스크립트에서 이벤트를 트리거

, Ajax 이벤트를 실행하여 MYSQL 데이터베이스를 업데이트 한 다음 다른 소켓 이벤트를 트리거하여이 사용자의 연결이 끊어 졌음을 알리는 사용자에게 전송하지만 사용자가 브라우저를 닫을 때만 작동하지만 랩톱을 닫거나 다른 장치 또한 다른 사용자가 처리 할 수 ​​있도록 다른 사용자에게 전송되는 것에 의존하기 때문에 발생하지는 않습니다.

이것은 매우 골치 거리며 해결 방법을 제시해야합니다.

+0

소켓 시간 제한/종료 이벤트를 청취해야하지만, 어떤 해결책도 찾지 못했을 것입니다. – erenon

+0

또 다른 문제점이 있습니다. 서버를 배치하거나 재부팅 할 때 이러한 이벤트가 발생하지 않을 수 있습니다. 현재의 접근 방식은 매우 비현실적입니다. – usr

+0

어떻게하면 더 좋은 방법이 될 수 있는지 알고 있습니까? –

답변

0

ajax 폴링을 사용하여 (서버가 청취하는 ajax reqeusts를 계속 보내고 10 초 후에 시간 초과되도록 허용) 사용자가 온라인 상태임을 알립니다. 서버가 요청 수신을 중지하면 사용자는 로그 아웃합니다.