2

Facebook、Google plus 或其他信息网站如何不断地从流中检索信息?我想有一个异步恢复,但他是如何不断得到的?这就像一个无限循环?

使用了哪种技术?

4

1 回答 1

0

有几种不同的方法可以在网络上近乎实时地显示更新。以下是一些最常见的:

短轮询

解决该问题的最简单方法是在短时间内连续轮询服务器(因此得名)。这意味着每隔几秒钟,客户端代码就会向服务器发送一个异步请求并显示结果。这种方法的缺点是,如果更新发生的频率低于查询服务器的频率,那么客户端会做很多工作而收效甚微。根据轮询频率,在服务器上发生事件和客户端接收到事件之间也可能存在轻微延迟。

长轮询

短轮询的下一个进化步骤是所谓的长轮询,其中客户端 JavaScript 在页面加载后立即向服务器发出异步请求。服务器仅在进行更新时才响应请求,一旦响应到达客户端,就会立即触发另一个请求。这种方法的关键部分是异步请求可以等待服务器很长时间。

长轮询节省了带宽和计算时间,因为只有在服务器发生更改时才处理响应。它确实需要更复杂的服务器端逻辑,但它确实允许在客户端进行近乎即时的更新。

这个问题有一个不错的样本:如何实现基本的“长轮询”?

网络套接字

WebSockets 是一种相对较新的技术,允许以类似于标准网络套接字的方式进行双向通信。服务器或客户端可以通过套接字发送消息,触发连接另一端的事件。尽管这样很好,但浏览器支持还不够广泛,不足以使其成为可靠的解决方案。

对于当前的 WebSocket 规范,请查看RFC 6455

于 2012-05-21T23:34:58.810 回答