17

我将为我的 Web 应用程序(一个小型​​社交网络)构建实时推送通知功能,但我不知道从哪里开始。

这就是我想要构建的:有类似的按钮,评论表单,......用户点击喜欢,写他们的评论和(相对)立即,在所有者的浏览器上显示新的喜欢和评论的数量,......像那。

我读过关于 nodeJs、MeteorJS 上的 socketIo,但不幸的是,它们需要现代浏览器支持的 WebSocket。我刚刚阅读了关于彗星技术的文章,发现它很容易应用。但我不确定它是否会表现良好,因为 Comet 依赖于长轮询连接(如果我错了,请纠正我)。

此外,我认为 facebook 正在使用 Comet 来实现其推送通知功能。通过萤火虫插件上的控制台选项卡,我可以看到始终与 facebook 保持连接。那么任何人都可以向我展示一种技术,一种开发这种功能的模型吗?

4

4 回答 4

17

一个有前途的想法是使用 HTML5 通知 API。只要您的浏览器正在运行(即使您正在浏览另一个网站或所有窗口都已关闭),如果您希望在用户屏幕上弹出通知,这是完美的。

http://www.paulund.co.uk/html5-notifications

但是,如果您想要异步更新页面的不同部分(无需刷新或按下按钮),您应该一起使用:

  • 阿贾克斯调用;
  • 听众和观察者。

当您的 Ajax 调用检索特定类型的 json 数据(例如)时,它可以触发带有许多新通知的徽章(侦听器)的出现,或者......

安装了 JQuery,你应该没问题...

尽管通常情况并非如此,但有时,对于简单的调整,对完成的工作进行编码会更容易......

你可以从这里开始:

如何在没有插件的情况下在 Jquery 中实现“观察者”? (它很旧,但很有趣)

或查看此页面:

使用 ajax/jquery 的浏览器即时更新

(令人难以置信的是谷歌查询返回 stacko 页面的频率)

于 2013-05-28T21:12:44.190 回答
1

您应该查看MQTT。它基本上适用于 Publish-Subscribe 模型,并且非常易于使用。该协议占用空间小,占用带宽少。Facebook 的 Messenger 也使用 MQTT。

于 2013-05-28T15:11:41.597 回答
0

您可以使用进入(例如)服务器上的 php 脚本的 ajax 调用,它使连接保持打开状态,并且仅在需要向用户显示某些内容时才回复。如果在特定时间内没有任何事情发生,连接将关闭并且客户端会触发一个新的 ajax 调用。请注意,这仅解决客户端/服务器通信,如果您想避免脚本不断轮询数据库,您仍然需要服务器内部的通知方法来唤醒 php 脚本,但是对此有很多建议它们取决于您在服务器上使用的语言。

于 2013-05-29T11:59:03.463 回答
-2

我有一个想法,它很简单,但它可能会奏效。为什么不将通知栏隐藏为 Div 标签并用 css 设计它,使其看起来像通知栏。然后每当一些用户喜欢或评论页面时,编写 php 或 js 函数并将其连接到喜欢或评论提交按钮,该按钮将显示页面所有者不可见的 div 可见。而且我相信,根据您使用的内容,我可能更喜欢 php session() 来识别页面所有者是否在线并且可以收到通知。此外,如果您需要跟踪页面的统计信息,您可以创建一个包含页面 ID 和用户评论的小型数据库。您可以使用此数据库在该隐藏的 Div 上推送多个通知。如果你愿意,你可以使用 Jquery 让它像 Facebook 一样移动。我不确定这是否是最优化的方法,但这是可能的。顺便说一句,我上网了一些,看看人们用什么来做到这一点。令人惊讶的是,我也找不到东西。

于 2013-05-23T02:43:22.323 回答