SSEに対するマイクロソフトの頑固さは、特に実装がXMLHttpRequest2
の単なるレイヤーであるため、標準が短く、3年間にわたって素晴らしいO'Reillyの本がありました。インスピレーションを得るための2つのオープンソース実装
とにかく、バックIE8への互換性を得るために推奨される手法は、非表示のiframeを作成し、その内側のソースポーリングを維持することであり、そこに新しいものは何も返す:あなただけが必要な場合
iframe = document.createElement("iframe");
iframe.setAttribute("style", "display: none;");
iframe.setAttribute("src", "abc_stream.php");
document.body.appendChild(iframe);
をあなたは、クライアントが実際のSSEと接続されている場合:これらの技術は、バックエンドでのごくわずかな支援を必要と
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
//Read this.responseText from the previous offset onwards
};
var u = url;
u += "xhr=1&t=" + (new Date().getTime());
xhr.open("GET", u);
:バックIE10にサポートするために、あなたはXMLHttpRequest2
オブジェクトを使用し、readyState==3
メッセージを聞くことができますハMIMEタイプをtext/event-stream
に設定してください。ただし、xhrハックを使用する場合は、text/plain
と設定する必要があります。上記のようにURLにxhr=1
を追加します(キャッシュされないようにするタイムスタンプ)。
xhrのテクニックは、単一のソリューションを使いたい場合は、SSEが動作するすべてのブラウザで機能します。 1つの欠点は、送信される全データがメモリに蓄積されていることです。 (responseText
が64キロバイト、またはそのような何かの上にある時はいつでも私の提案は、自動再接続にある。)