2017-03-12 85 views
0

投稿が完了するまでに非常に時間がかかる投稿リクエストがあります。http要求とSSE(サーバー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')に変更してください。 出力の前にこの行を置く必要があります。

関連する問題