WIZ-CODE.blog

JavaScriptやAjaxをテーマとしたブログです。

*

PHPとJavaScriptでAjaxストリーミングの続き

   

前回のIEバージョンのスクリプトがサーバー上で動かなかった問題ですが、スクリプト部分を変えることで一応の解決を見ました。Content-typeのところが、どうもtext/plainではダメなようで、IE以外のブラウザで指定していたtext/event-streamもしくはapplication/octet-streamにしないとストリーミングにならないみたいです。以下は修正後のPHPスクリプトになります。

IE8-9専用PHPコード ajax-stream-test-for-ie.php

 
header("Access-Control-Allow-Origin: *");
header("Content-type: text/event-stream; charset=utf-8");

ob_end_flush();
ob_start('mb_output_handler');

echo str_repeat(' ', 2048);

for ($i = 0; $i < 10; $i++)
{
	$string = ($i + 1) * 10 ."件の処理を完了しました
\n"; echo $string; ob_flush(); flush(); sleep(1); }  

⇒AjaxストリーミングのデモページInternet Explorerのバージョン8以上で見てください) また、ここから一歩進んでPHPとデータベースを利用して、サーバー側で変化があったときに、ストリーミング的にクライアント側にデータを送信するやり方を実装してみました。まず、クライアント側でアクションがあった場合、即時XHRリクエストをし、一方で常時サーバー側の変化を監視するため、接続を張りっぱなしにし(実際には二十秒ごとに張り直しをしています)、サーバーで変化(データベースの更新など)が起きたら、HTTPストリーミングを利用してリアルタイムデータを返すようにしています。 ⇒HTTPストリーミングでクライアントとサーバーを連動させるテスト

 - JavaScript/Ajax , , ,