Facebook 如何处理他们的“实时”数据?如果您正在查看事件源并且用户喜欢某些内容,您可以立即看到文本更改,表示该用户喜欢它,或者当您收到通知时,您将在页面上看到红色通知标志,而无需刷新。
我知道这段代码可以在不刷新的情况下推送数据:
$.post('ajax/test.html', function(data) {
$('.result').html(data);
});
但是有人可以解释如何推送实时数据,以便其他用户无需刷新即可在其页面上看到更新。
谢谢
最佳答案
这可以使用各种技术来实现,这些技术有很多名称:长轮询、服务器发送事件、Comet、WebSocket 等等。
基本思想是这样的:
爱丽丝打开 Facebook。她的浏览器发出更新请求(例如
$.get
),但如果没有新更新,服务器不会响应,并且请求仍处于“等待”状态。鲍勃打开 Facebook。他决定对爱丽丝的墙发表评论。他的浏览器将他的评论发布到服务器(
$.post
)。- 服务器接受此帖子,并正确处理它(保存到 Alice 的墙上等)
- 但服务器也会检查是否有来自 Alice 的等待更新请求。如果有,服务器会将有关此更新的信息呈现到响应流中并关闭连接。
Alice 的浏览器终于得到了对这个长时间挂起的请求的响应,并愉快地在通知区域绘制了一个红色的“1”。它还会立即打开另一个更新请求(不错过任何一个)。
Alice 看到了 Bob 立即发送的评论。
所描述的技术称为“长轮询”,它首先由 Google 在 Gmail 中引入。
关于php - 实时显示在其他在线用户上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584744/