不断从流中检索信息

时间:2012-05-21 15:50:53

标签: asynchronous stream infinite-loop

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

使用了哪种技术?

1 个答案:

答案 0 :(得分:0)

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

短轮询

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

长轮询

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

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

这个问题有一个不错的样本:How do I implement basic "Long Polling"?

的WebSockets

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

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