2012-11-24 2 views
1

나는 소켓 기반의 채팅 프로젝트를 진행 중이다. 중복 된 사용자 이름을 확인할 수 있도록 모든 온라인 사용자의 이름을 데이터베이스에 저장합니다. 우리 응용 프로그램은 우리가 채팅을하고 브라우저를 직접 닫을 때 사용자를 쉽게 오프라인 상태로 만들지 만 문제는 데이터베이스에서 사용자를 삭제하라는 AJAX 호출이 호출되지 않을 때 캐시 메모리를 직접 지울 때 문제가된다는 것입니다. 따라서 캐시를 지우고 오프라인이 된 경우에도 AJAX 호출이 시작되지 않았고 캐시를 직접 지우므로 항목이 데이터베이스에 계속 유지된다는 의미로 프론트 사용자에게 온라인으로 표시됩니다.자바 스크립트를 사용하여 캐시 지우기 이벤트를 잡는 방법?

그래서, 자바 캐시를 사용하여 캐시 지우기 이벤트를 잡는 방법에 대한 아이디어가있는 사람이라면 알려 주시기 바랍니다.

나는이 문제에 대해 많은 검색을 수행했지만 아무 것도 발견되지 않았습니다.

어떤 제안이든지 즐겁습니다. 사전에

Thnx을 ..... 당신은 무엇을 요구하는 것은 불가능하다

+1

"캐시 지우기"이벤트가 없습니다. 사용자가 브라우저 캐시를 지울 때를 감지 할 수있는 방법이 없습니다. – Lee

답변

1

는 (사용자가 자바 스크립트에서 브라우저 캐시를 지 웁니다 때를 감지 할 수있는 방법이 없습니다).

두 사용자간에 보이지 않는 "핑 (ping)"을 자주 (1 분과 같이 임계 값을 선택하십시오) 보내고 두 사용자 모두에 대해 (임계 값 + 작은 임계 값)에 대한 ping을받지 못하면 다른 사용자는 오프라인 상태 여야합니다. (또는 "나는 아직 여기 있습니다"ping에 대한 요청을보다 강력하게 보내야합니다.)

+0

thnx ascii-lime, 귀하의 제안에 대한하지만이 솔루션은 내 문제에 대한 적절한 해결책으로 보이지 않습니다. 왜냐하면 이미 채팅은 소켓을 통해 이루어졌고 사용자 이름은 데이터베이스에서 나왔다는 것을 언급했기 때문입니다. Thnx again –

+0

@RaviDalal 아마도 데이터베이스를 저장 한 서버를 핑 (ping)하는 사용자가있을 수 있으며 사용자가 특정 시간 동안 ping을 수행하지 못하면 데이터베이스에서 해당 테이블을 삭제할 수 있습니다. – Paulpro

+0

이것이 유일한 강력한 방법입니다. – goat

관련 문제