2009-04-10 3 views
1

내 응용 프로그램에서 클라이언트는 브라우저에서 Javascript 함수 집합이며 일부 작업 (예 : 클립 재생)을 수행합니다. XmlHttpRequest를 사용하여 서버와 통신합니다. 그러나 서버는 다른 방법으로 클라이언트를 방해하지 않으므로 갑자기 연결을 닫을 수 있습니다. 클립을 재생하는 동안 클라이언트가 연결을 종료했음을 감지하여 메시지를 인쇄하고 페이지를 지울 수 있습니까? 도움을 주시면 감사하겠습니다. 감사합니다, Anil클라이언트 측 Javascript가 클라이언트가 작동하는 동안 서버가 HTTP 연결을 닫으면 감지 할 수 있습니까?

답변

0

서버가 인 경우 클라이언트가 연결이 닫혔 음을에게 알릴 수 없습니다. 그러나 제안 된 폴링 방법은 통지가 효율적일만큼 효율적이지 않습니다.

NEXT Get 요청시 클라이언트가 해당 세션이 유효하지 않다는 것을 지정하여 해결했습니다.

이것은 URL 재 작성으로 구현되었습니다. Javascript 기능에서 보낸 각 요청에 "jsessionid = [id]"를 추가합니다. 서블릿은 현재 세션 ID를 저장합니다.

0

아마도 XmlHttpRequest 객체를 폴링 할 수 있으므로 잠시 동안 하트 비트를 보내어 연결이 닫혔는지 확인하십시오. 그렇지 않으면 서버는 클라이언트에게 연결을 닫으라는 신호를 보내야합니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 Javascript는 단일 스레드입니다. 등록 할 수있는 일종의 예외 또는 콜백이 있습니까? 내가하고 싶은 것은 연결이 닫힐 때 브라우저를 지우고 지우는 것입니다. –

+0

예, 자바 스크립트로 타이밍 이벤트를 생성 할 수 있습니다. http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/ – CookieOfFortune

1

클립이 클라이언트로 스트리밍되는 경우 클립 만 제공하면됩니다.

그러나 클립이 다운로드되고 브라우저를 통해 재생 된 것처럼 보입니다. 이 경우 CookieOfFortune에서 설명한대로 워치 독 접근법을 사용하는 것이 가장 좋습니다. 정기적으로 서버를 폴링하고 (1 초에 1 회 정도) 작은 확인 메시지로 응답하도록하십시오. 연결이 닫히면 서버가 부정적인 수단으로 응답하게하십시오.

혜성과 같은 시스템을 사용하지 않으면 서버가 세션 종료를 나타내는 메시지를 '보내도록'하기가 어렵습니다.

클라이언트가 클립을 다운로드하자마자 원하는대로 재생할 수 있습니다. 불행히도 스트리밍 방식으로 전환하는 것 외에는이를 막을 방법이 없습니다. 콘텐츠를 보호하는 것이 우선 순위라면이 변경을 제안하십시오.

+0

AFAIK, Javascript는 단일 스레드입니다. 등록 할 수있는 일종의 예외 또는 콜백이 있습니까? 내가하고 싶은 일은 연결이 닫힐 때 브라우저를 지우고 지우는 것입니다. 아마도 세션 ID가 작동 할 것입니다. 나는 그것을 시도하고 다시 게시한다. –

관련 문제