2017-03-12 1 views
0

게시 요청을 완료하는 데 시간이 오래 걸립니다.http 요청을 SSE (Server SentEvents)와 결합하는 방법

나는 진전 상황을 보여주기 위해 SSE를 사용해야한다는 결론을 모두 읽었으며 결론을 얻었다. HTTP 요청을 중지하면 응답 본문에 진행률 메시지가 표시되지만 응답 본문은 제외하고 메시지 만 가져 오는 방법을 관리 할 수 ​​없습니다.

FE에서 EventSource 클래스로 보내려면 PHP 스크립트가 필요하지만 모든 스크립트에는 '직접 스크립트 액세스가 허용되지 않습니다'라는 메시지가 표시됩니다.

정보는 컨트롤러 자체가 아닌 라이브러리에서 전송되며 호출은 컨트롤러가 index_post를 사용하여 호출합니다.

서버에서 내 "에코"메시지를 표시하는 또 다른 방법이 있습니까?

나는 대부분의 오류로

"EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection." 

를 얻을. 어쨌든 인덱스 페이지에 연결하기 때문에 이벤트 스트림의 헤더를 넣으면 도움이되지 않지만 여전히 HTML로 필요합니다.

나에게 더 좋은 제안이 있다면 다시 듣고 싶습니다.

+0

도움이되기를 바랍니다. https://www.howopensource.com/2014/12/introduction-to-server-sent-events/ –

+0

글쎄, 여기 정확히 내가 사용하고 아무데도 가지고 있지 않습니다 ... 나는 뭔가가 필요합니다. 더 고급. –

답변

1

먼저 스크립트에 직접 액세스하고 싶지는 않습니다. 컨트롤러 사용은 절대적으로 좋습니다.

당신은 다음과 같이 보거나 뷰를 사용하지 않고 출력을 반향 당신의 출력을 보낼 수 있습니다

echo "data: Hello World!\n\n"; 
exit; 

귀하의 주요 문제는, 당신은 적절한 MIME 타입을 전송되지 않습니다. output library을 사용하십시오. $this->output->set_content_type('application/json')으로 예를보고 $this->output->set_content_type('text/event-stream')으로 변경하십시오. 출력 전에이 행을 두어야합니다.

관련 문제