有一些交互式站点(例如这个:)),可以在不刷新任何内容的情况下注意到事件。例如,当我得到答案时,上面会出现一个红色圆圈。我知道可以通过发送ajax
请求来完成,比如大约每 5 秒一个 - 但它会杀死服务器。那么服务器应该如何向客户端发送某些更改?
像 socket.io 这样的解决方案实现了不同的方法来保持客户端的连接,包括:
- HTML5 Websockets(新的,相当不错,但旧版浏览器不支持) Flash插件
- (需要Flash插件,没有移动支持)
- 长轮询(传统 Web 服务的杀手锏)
您可以打开一个 XHR,该 XHR 将保持活动状态,直到服务器具有发送响应的状态更改。
这称为长轮询。