내 응용 프로그램에서 클라이언트는 완료하는 데 1-2 분이 걸릴 수있는 복잡한 작업을 요청할 수 있습니다. 작업은 분리 된 스레드에서 실행되고 요청 처리기는 BlockingQueue를 통해 요청 처리기와 통신합니다.장기 실행 작업의 결과로 서버를 사용 중으로 폴링하지 않도록 브라우저 시간 초과를 악용 할 수 있습니까?
현재 서버는 클라이언트를 10 초마다 서버를 폴링하는 대기중인 페이지로 즉시 리디렉션합니다. 그러나 이것은 매우 비효율적이며 클라이언트가 설문 조사 직후에 작업이 끝나면 추가로 10 초를 기다려야 할 수도 있습니다.
내가 원하는 것은 대기중인 페이지에 대한 요청 처리기가 작업이 완료 될 때까지 차단 된 다음 사용자에게만 응답을 쓸 수있게하려는 것입니다. 내 관찰을 기반으로, 서버가 TCP 소켓을 허용한다면 (그리고 어쩌면 헤더를 다시 써 넣었습니까?) 대부분의 브라우저는 더 긴 시간 초과를 사용합니다. 그러나 다른 브라우저에서의 정확한 시간 초과에 대해서는 확신하지 못합니다.
브라우저를 2 분 정도 기다리는 것이 현실적입니까? 누구든지이보다 나은 아이디어에 대한 경험이 있습니까?
이것은 '롱 폴링'또는 인터넷 검색을 돕기 위해 혜성이라고 불리는데, 많은 잡아 당김이 있다는 것을 알고 있습니다. 정말로 필요한 경우가 아니면, 그러한 작은 유스 케이스에 대한 노력은 가치가 없습니다. – Andrew