클라이언트가 작동하는 동안 서버가 HTTP 연결을 닫을 때 클라이언트 측 JavaScript가 감지 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/737878

  •  09-09-2019
  •  | 
  •  

문제

내 응용 프로그램에서 클라이언트는 브라우저의 JavaScript 기능 세트이며 클립을 재생하는 것과 같은 작업을 수행합니다. xmlhttprequest를 사용하여 서버와 대화합니다. 그러나 클라이언트를 방해하는 다른 방식이 없기 때문에 서버는 갑자기 연결을 닫을 수 있습니다. 클라이언트가 클립을 재생하는 동안 연결이 닫힌 것을 감지하고 메시지를 인쇄하고 페이지를 지울 수 있습니까? 모든 도움이 감사합니다. 고마워요

도움이 되었습니까?

해결책 3

서버처럼 보입니다 할 수 없습니다 클라이언트에게 연결이 닫혀 있음을 알리십시오. 그러나 제안 된 투표 방법은 알림만큼 효율적이지 않습니다.

다음 GET 요청에서 고객은 세션이 유효하지 않다고 지정하여 해결했습니다.

이것은 JavaScript 함수가 보낸 각 요청에 대해 URL Rewriting- "jsessionid = [id]에 의해 구현되었습니다. 서블릿은 현재 세션 ID를 저장합니다.

다른 팁

클립이 클라이언트에게 스트리밍되면 서빙을 중단 할 수 있습니다.

그러나 클립이 다운로드 된 다음 브라우저를 통해 재생되는 것 같습니다. 이 경우 Cookieoffortune에서 설명한대로 Watchdog 접근 방식을 사용하는 것이 가장 좋습니다. 서버를 정기적으로 (1 초 정도) 설문 조사하고 작은 확인 메시지로 응답하도록하십시오. 연결이 닫히면 서버가 부정적인 Messgage로 응답하도록하십시오.

불행히도, 혜성과 같은 시스템을 사용하지 않으면 서버가 세션 폐쇄를 나타내는 메시지를 '보내기'하게하는 것은 매우 어렵습니다.

그러나 클라이언트가 클립을 다운로드하자마자 원하는 경우 클립을 완전히 재생할 수 있습니다. 불행히도 스트리밍 접근법으로 전환하는 것 외에이 방법을 중지 할 방법이 없습니다. 콘텐츠를 확보하는 것이 우선 순위라면이 변경을 제안합니다.

아마도 xmlhttprequest 객체를 폴링 할 수 있으므로 가끔씩 하트 비트를 보내서 연결이 닫혀 있는지 확인하십시오. 그렇지 않으면 서버는 클라이언트에게 연결을 닫을 것이라고 말하기 위해 신호를 보내야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top