首页 文章

与Rails和jQuery类似的Facebook推送式通知

提问于
浏览
6

我想创建像Facebook这样的推送通知系统 . 每当Facebook想要告诉你一些事情(比如有人在帖子上发表评论,标记你等)时,你会看到屏幕左下角出现一个小通知 . 它淡入淡出 .

如何使用jQuery和Rails构建这样的系统?它甚至如何工作? JS是否经常询问服务器,"is there a new notification?"或服务器是否以某种方式推送到此服务 .

现在,如果用户向另一个用户发送消息(例如),我可以向用户的队列添加一条通知,说“你有一条新消息”,但是在页面重新加载之前它不会出现...

3 回答

  • 6

    Juggernaut看起来真的很酷,我很久以前就看过它,现在它被重写在node.js之上 . 尼斯 . 你必须安装redis和node.js并运行node.js服务器,其余的都很简单 .

    Pusherapp.com看起来很酷,它付费,但至少你不必安装和运行额外的服务(和守护,扩展它们,......) .

    但是,如果负载不是太大,我宁愿保持简单,只使用javascript轮询 . 您可以轻松编写自己的(这不是太难),但jquery已经存在一些非常好的插件 . 例如PeriodicalUpdater .

  • 2

    目前,使用Comet可以解决这些问题 .

    更多信息,http://en.wikipedia.org/wiki/Comet_(programming)

    基本上浏览器使用HTTP是一种无状态协议,因为它只能以某种方式工作,我们永远无法真正获得真正的 push 通知 . 当想要推送到浏览器时,我们必须以某种方式模仿TCP / Socket之类的连接以推送它 . Comet只是一个用于定义此类技术的术语 .

    有许多图书馆可以提供帮助.Eg: - Orbited,Juggernaut on rails .

    对于新的浏览器,有一种叫做Websockets Protocol的东西,我提到的库也利用了它 . 这是一个很大的话题,但我很确定,你会找到一些Juggernaut和Rails的基本例子 .

    还有http://pusherapp.com,它做同样的事情,但为它收费 .

  • 4

    许多网站实现这样的功能的另一种方式是波什,或同步http的双向流:

    http://en.wikipedia.org/wiki/BOSH

    这里有几个javascript库之一:

    http://code.stanziq.com/strophe/

    这种类型的设置需要后端的xmpp / bosh服务器,但基本上浏览器保持连接打开(非常类似于彗星),并且消息进入浏览器处理它们 .

    此技术可用于通知,聊天以及您希望实时发生的任何事情 .

相关问题