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

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

如何使用jQuery和Rails构建这样的系统? 它甚至如何工作? JS经常询问服务器,“是否有新的通知?” 或者服务器以某种方式送到这项服务。

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

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

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

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

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

有关更多信息,请访问http://en.wikipedia.org/wiki/Comet_(programming)

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

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

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

还有http://pusherapp.com ,它做同样的事情,但收取钱。

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

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

这里有一些javascript库之一:

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

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

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