【发布时间】:2011-05-08 16:33:46
【问题描述】:
我用 tornado 编写了一个应用程序,以支持通过 HTTP 流在我的网站上进行实时更新。它适用于除 IE7 和 IE8 之外的所有浏览器。下面是处理 HTTP 流的代码:
... code to create xhr object
xhr.open('GET', 'http://192.168.0.173:8888', true);
xhr.onreadystatechange = function() {
if(xhr.readyState == 3 && xhr.status==200) {
try {
alert(xhr.responseText);
} catch(e) {
alert("noo");
}
}
}
setTimeout("xhr.send(null);", 1000);
问题是当readyState为3时xhr.responseText不可用。经过几个小时的google,我了解到IXMLHTTPRequest.responseStream。我尝试使用
xhr = new ActiveXObject("MSXML2.XMLHTTP.3.0");
但结果相同。请求发送到服务器,readyState 为 3,但 xhr.responseStream 不可用。
有什么想法吗?或者当我检测到 IE 时我应该退回到长轮询?
谢谢
亨利
【问题讨论】:
-
您是否考虑过使用跨浏览器提供一致功能的 JS 框架?
-
我试过 jQuery 和 YUI 但他们似乎不支持这个。你知道支持 HTTP 流的吗?
-
我记得在某处读到过,在使用
onreadystatechange事件时,您不能保证每次都能命中readyState。
标签: javascript http streaming comet