XHR不适合聊天应用程序?

时间:2012-09-07 22:23:13

标签: javascript ajax

当我们发送XMLHttpRequest时,我们总是有数百个额外的字节。在正常使用中它是好的。但是在构建需要速度的应用程序时,这对可靠性来说并不好。

function update(){
    var xhr = getXMLHttp(); // Normal catch handler for XHR
    xhr.open("POST", "update.php?r=" + "&chatvslog=" + user, true);
    xhr.send();
window.setTimeout("update();",300);
}

请求结束确实从170到360毫秒发送。问题是我需要更快地完成这项工作。

有没有办法改进我的XMLHttpRequest或以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:4)

轮询是一种糟糕的解决方法,可以在一个小小的scalle中完成工作,但实现效率不高且难看。

现代浏览器支持WebSockets作为允许双向通信的更好方法。使用诸如node.js'Socket.IO之类的东西,你甚至可以使用高级WebSocket抽象层,它可以回退到浏览器中可用的任何东西 - 它可以使用WebSockets(首选)和Flash套接字,AJAX等技术长轮询或JSONp长轮询,无需关心使用的内容。

答案 1 :(得分:0)

这就是WebSockets的设计目标,但它尚未支持IE(虽然它将在IE 10中出现),或者其他大型浏览器的一些较旧但仍然使用的版本。

http://caniuse.com/#search=websockets

在此之前,请查看Comet:

http://en.wikipedia.org/wiki/Comet_(programming)