XHR不适用于聊天应用程序

XHR not suited for chat applications?

本文关键字:应用程序 聊天 适用于 不适用 XHR      更新时间:2023-09-26

当我们发送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,或者用另一种方法?

轮询是一种糟糕的解决方法,它只需小规模完成任务,但实现起来既不高效又不美观。

现代浏览器支持WebSocket作为一种更好的双向通信方式。使用node.js的Socket.IO之类的东西,您甚至可以使用高级WebSocket抽象层,该抽象层可以回退到浏览器中的任何可用层-它可以使用WebSocket(首选)和Flash套接字、AJAX长轮询或JSONp长轮询等技术,而无需关心使用了什么。

这就是WebSockets的设计目的,但它在IE上还不受支持(尽管它在IE 10中出现),或者在其他大型浏览器的一些旧版本中仍然使用。

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

在此之前,请查看Comet:

http://en.wikipedia.org/wiki/Comet_(编程)