facebook如何将数据推送到新闻动态
How does facebook push data to news feed?
我很好奇Facebook是如何将数据推送到浏览器的。新数据显示在提要的顶部,无需重新加载页面或单击按钮
Facebook是通过以设定的间隔通过AJAX轮询服务器来实现这一点,还是通过某种方式将新数据从服务器无故推送到客户端?
如果是这样,他们使用什么语言或API来做到这一点?
这实际上被称为'长轮询',或'彗星'。执行服务器推送有不同的方法,但最常见的方法是在接收数据时保持连接打开(它有缺点,因为浏览器对主机的打开连接数量有限制)。Facebook已经开源了Tornado网络服务器,它可以处理大量开放的连接(这可能是一个问题,你有很多用户,但你使用apache为例)。在收到AJAX响应的那一刻,您只需执行一个新请求,等待下一个响应。
基本上代码做一个AJAX调用到他们的服务器,或者等待触发另一个请求的响应,轮询计时器,或者他们打开一个websocket接收数据,一旦它被推送。这当然是针对出现在提要顶部的"新"数据。当到达页面底部时,它们只是执行另一个AJAX调用来获取下一个n项。
他们使用AJAX推送,并且他们使用(至少他们曾经使用过)无限滚动。
所以你加载你的页面,他们会对服务器进行初始调用,根据登录的人加载一些消息,比如使用JQuery这样的框架:
http://api.jquery.com/jQuery.ajax/然后当你向下滚动时,他们会注意到你何时接近页面底部,他们需要加载更多的数据,这样你就不会没有数据了,然后他们会自动拨打另一个电话。这被称为无限滚动,并跟踪您在DOM中的位置:
仅举一个例子:http://ajaxian.com/archives/implementing-infinite-scrolling-with-jquery
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 动态分配GA增强型电子商务跟踪器
- onkeyup无法动态创建多个文本区域
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使Javascript动态html表及其上的事件
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何使用javascript从主svg对象动态创建svg视图框
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- 如何在Google柱状图中动态添加行/列
- 困在逻辑中试图定位动态的东西
- 在动态创建的元素上获取对特定选择器的引用
- 如何动态插入jquery代码
- 使用 JS 将隐藏的表单字段添加到动态生成的 Squarespace 新闻通讯块中
- 静态网站中的伪动态新闻部分
- 从谷歌新闻提要动态填充jQueryMobile列表视图
- facebook如何将数据推送到新闻动态
- Facebook应用程序:为用户添加动态内容'的新闻推送