2016-06-14 2 views
0

이 개념과 관련된 사용자의보기/의견을 알고 싶습니다. 대안이 있다면? 이것이 실현 가능하거나 유익한 것이라면?아이디어 : 단일 http 요청을 사용하여 여러 HTTP 응답을 생성하십시오.

모든 http 요청에 대해 서버는 일부 작업을 수행하고 http 응답을 되돌려 보냅니다.

이제 서버에서 실행중인 프로세스를보다 효율적으로 제어하려는 시나리오를 고려하십시오.

상황 1 : http 요청 보내기 -> 서버 시작 처리 (긴 작업 진행 중) -> 사용자가 브라우저를 닫습니다. 프로세스가 계속 실행되어 서버를 소비하고 HTTP 응답이 클라이언트에서 무시됩니다.

여기 리소스가 낭비됩니다.

상황이 : HTTP 요청 보내기 -> 서버가 처리하기 시작한다 (공정 긴 작업)

여기에 클라이언트는 서버에서 실행중인 프로세스의 상태를 인식하지 못합니다. 클라이언트는 HTTP 응답을 수신 할 때까지 기다려야합니다.

내 아이디어 : 초기 http 요청과 최종 http 응답 사이에 여러 중간 http 응답을 보내는 기능을 추가하십시오.이 기능은 서버 쪽에서 실행되는 프로세스에 관한 정보를 전달합니다. 상황

용액 1 : HTTP 요청 전송 -> 서버 개시 처리 (단계 긴 작업) -> 사용자가 브라우저를 폐쇄 - -> [중간 HTTP 응답과 같은 프로세스 ID를 반환]> [을 발송 > 서버가 시작이 (공정 긴 작업을) 처리 - -> 프로세스가 실행의 세부 [리턴 HTTP 응답을 HTTP 요청의 전송 님의 HTTP 요청은 프로세스 ID] 상황이에

솔루션을 사용하여 서버 프로세스를 종료 간격으로 서버] -> [필요한 경우 모든 작업 수행]

친절하게 코멘트 :) 나는 아무것도 놓친다면 정정해라.

+0

이것은 일반적으로 결과를 찾으러 갈 곳을 알려주는'Location' 헤더가있는 Accepted 202를 반환하여 수행됩니다. 진행중인 업데이트를 원하면 WebSocket을 사용하십시오. 자신의 HTTP를 정의하는 것은 아마도 효과적인 경로 전달이 아니므로 SO는 어쨌든 그 프로세스로 당신을 정말로 도울 수 없습니다. 우리는 프로토콜을 담당하지 않습니다. – jonrsharpe

+0

깨끗하고 단순하게 들립니다. 가서 실행하십시오. –

+0

@RolandIllig 나는 작업의 규모를 분명히 이해하지 못할 때 "go do it"로 OP를 보내는 것이 특히 건설적이라고 생각하지 않습니다. – jonrsharpe

답변