我正在尝试实施类似Facebook的实时通知系统,以便在有人将其添加为朋友时通知用户,例如他们的帖子或帖子回复他们的评论。
所有数据库和PHP部分都已完成,但我无法弄清楚如何像Facebook那样实现它。
每当有人喜欢/评论您在Facebook上的帖子时,屏幕左下角会出现淡蓝色框。只要有人点击按钮或在Facebook上发表评论,就会发生这种情况。我想知道我应该怎么做才能实现这个目标。
使用YUI或任何JavaScript框架,我可以在n
秒后查询数据库表以检查通知。这种方法太重了。
我想知道是否有任何服务器端mod或脚本可以完成,以便每当我的数据库表中有新的通知条目时,服务器将告诉该特定客户端。这样就可以完全避免从客户端到服务器的不必要的请求调用,并且系统可以有效地为一次有超过50,000个在线用户的网站工作。
我怎样才能做到这一点?
答案 0 :(得分:23)
您应该研究COMET技术,例如forever frame(tutorial)和长轮询。这使您可以使用服务器与客户端推送通信的形式。
答案 1 :(得分:5)
答案 2 :(得分:2)
答案 3 :(得分:0)
你基本上设置了一个请求,就像callng服务那样,要求你的服务器/数据库提供该用户的通知。你可以做一个while循环重试,如果没有通知(在搜索之间可能Thread.Sleep
)。您的js请求将超时,然后您可以在超时时再次调用该函数。这意味着长时间的民意调查
答案 4 :(得分:-8)
唯一的方法是使用某种机制(例如Javascript)重复轮询服务器以获取更新。无法将服务器推送到Web浏览器。