いいえ、Chrome、Safari、FireFox では正常ではありません。イベント readystate.LOADED で、クライアント側のサーバーからのデータを処理できるため
/**
* @param {string} url
* @param {function(*)} callback
* @param {boolean} reload */
archiva.io.streamXhr = function(url, callback) {
var xhr = new goog.net.XhrIo();
var lastIndex = -1;
var delimiter = '\n';
goog.events.listen(xhr, goog.net.EventType.READY_STATE_CHANGE, function() {
// As more data is loaded, look for the next delimiter so the JSON can // be extracted, parsed, and passed to the callback.
if ( xhr.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ) {
var str = xhr.getResponseText();
var index;
while ((index = str.indexOf(delimiter, lastIndex + 1)) != -1) {
var json = str.substring(lastIndex + 1, index);
callback(json);
lastIndex = index;
}
}
if (xhr.isComplete()) {
// Reconnect if the response finishes for any reason.
archiva.io.streamXhr(url, callback);
xhr.dispose();
}
});
xhr.send(url, 'POST');
};
および xhr.getReadyState() no そのようなブラウザーは 3 になり、getResponseText()は応答テキストを返します (サーバー側で writer.flush() を実行し、 writer.close() を実行する必要がない場合)。
しかし、IE < 10 のため、状態 = 3 ではgetResponseText()を実行できません。状態 == 4 のみです。状態 4 はクローズの状態です。これが、データをフラッシュした後に接続を閉じる必要がある理由です。他の場合、IE はデータのロードを続行し、処理しないためです。ただし、サーバー側およびクローズ後のデータ量を管理することは可能です。
このリンクを見て、Tomcat 7コメットを実装する方法
この助けを願っています