2014-09-01 1 views
0

서버 (node.js)의 특정 파일을 나타내는 JSON 객체 배열 (AngularJS 웹 응용 프로그램에서 AJAX 호출로 요청)을 반환하라는 요청이 있습니다. . 대부분의 경우 결과가 데이터베이스에 저장되므로 응답이 매우 빠릅니다.처리하는 데 오랜 시간이 걸리는 HTTP 응답의 진행

그러나 데이터베이스가 채워지지 않았거나 파일이 변경된 경우 파일을 구문 분석해야하며 (타사 웹 서비스에 요청하는 서버 포함) 데이터베이스에 저장 한 다음 파일을 분석해야합니다. 고객에게 보냈습니다.

파일 수에 따라 10 초 이상 소요될 수 있습니다.

현재 웹 브라우저는 응답을 기다리는 중일뿐입니다. 웹 페이지의 진행률 표시 줄에 구문 분석의 진행 상황을 알리는 별도의 WebSocket이 있습니다. 그러나 서버에 파일이 많은 경우 웹 브라우저가 시간 초과됩니다.

구문 분석이 필요한 경우 즉시 응답을 반환하고 클라이언트가 구문 분석이 완료되었다고 (WebSocket을 통해) 요청한 후에 클라이언트가 요청하도록해야합니다. 이것에 대한 적절한 응답은 무엇입니까? 202 Accepted? 또는 426 업그레이드 필요 (WebSocket)?

HTTP를 통해 진행 상황을 보내고 WebSocket을 전혀 사용하지 않는 방법이 있습니까? (HTTP 헤더를 백분율 헤더로 스트리밍 한 다음 본문에 json을 보내거나 응답 시간이 오래 걸리면 웹 브라우저 시간 초과가됩니다.)

답변

0

몇 가지 아이디어가있을 수 있습니다. 더 많은 방법 :

  • 페이지가 고정 크기가 아니며 즉시 실행되는 일부 스크립트 영역으로 계속 업데이트되는 JSONP이 있습니다. 나는 그것을 해킹이라고 생각 하겠지만 작동한다.
  • 그런 다음 서버를 폴링하여 상태 업데이트를 가져오고 현재 값을 표시하는 XMLHTTPRequest를 가질 수 있습니다.
  • 몇 초 동안 새로 고침 시간이있는 메타 새로 고침 헤더를 사용하여 동일한 페이지를 다시로드하고 다시로드하면 JavaScript 없이도 비슷한 작업을 수행 할 수 있습니다. 서버 측에서는 현재 상태로 페이지를 지속적으로 업데이트하거나 필요에 따라 페이지를 생성합니다.
관련 문제