Facebook和其他网页似乎如何自动推送到网页?他们不是一直在刷新。
我知道这将是通过javascript,但在理论上有点不确定。是否有一个javascript脚本继续检查Facebook服务器,看看是否创建了任何更新?
有人能指出我正确的方向,我可以研究如何将此功能添加到我的网页? (它可能更像是一个javascript的东西,但我使用的是C#ASP.NET)
答案 0 :(得分:1)
AJAX:
答案 1 :(得分:1)
我相信他们使用“保持活力”的会话结合维基百科上的一些技术解释http://en.wikipedia.org/wiki/Push_technology
答案 2 :(得分:1)
如果您正在谈论Facebook在您的朋友发布新故事时自动在您的浏览器中更新新闻Feed的方式,那么答案是http streaming。
我无法告诉您他们使用的确切实现,但其基础是他们使用xhr(通常称为 ajax )来执行{{3}对着他们的服务器,然后在新数据进入时使用js来操作DOM。
实现此类功能的一种流行方法是使用long polling
答案 3 :(得分:0)
您还应该查看Server-Sent Events。
答案 4 :(得分:0)
他们继续检查在会话对象中创建的服务器上的非常小的布尔变量并持续更新(不知道间隔可能是1到5秒)
一旦他们发现这个变量发生变化,他们会寻找更大的变量(比如你的朋友发布),如果他们发现变化他们会寻找更大的变量(就像你所拥有的其他任何订阅一样)
所有这些都会在服务器上的进程中异步发生,而不会通知您,除非它们已完成。
数据来自Web服务,并通过操纵网页的DOM对象使用JavaScript异步绑定到您的页面。
答案 5 :(得分:0)
嗯,只是想提供一些细节。 HTTP是无状态的。所以没有推动的概念。你需要明白这一点。很重要。 HTTP是无状态。
那怎么办?
打开一个firebug并观察流量,对于facebook和gmail等,你会看到有不断的XMLHTTPRequests被发送到服务器。如果有新消息,则会获取并且您的前端会更新您的UI。所以他们正在使用AJAX。
发生了什么事。
现在是socket.io,它可以推送到客户端,但这是另一个故事。
答案 6 :(得分:-1)
我使用dwr来实现向网络推送一些信息。它可能会像这样工作,首先是网络JS发布到,然后网络保持此调用,直到网络需要推送到Web或超时。然后,Web调用您之前注册的回调函数。