Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

push-style notifications similar to Facebook with Rails and jQuery

I want to create a push notification system like Facebook. Whenever Facebook wants to tell you something (like that someone commented on a post, tagged you, etc), you'll see a small notification show up in the bottom left corner of the screen. It fades in and fades out.

How do I build a system like this with jQuery and Rails? How does it even work? Does JS constantly ask the server, "is there a new notification?" or does the server somehow push to this service.

Right now, if a user sends another user a message (for example), I can add a notification to the user's queue saying "you have a new message", but it won't appear until a page reload...

like image 613
sethvargo Avatar asked Jan 20 '11 04:01

sethvargo


2 Answers

Juggernaut looks really cool, i saw it demoed a long time ago, now it is rewritten on top of node.js. Nice. You have to install redis and node.js and run a node.js server and the rest is dead-easy.

Pusherapp.com also looks cool, it is paying, but at least you don't have to install and run extra services (and daemonise, scale them, ...).

But, if the load is not too big, i would prefer to keep things simple, and just poll using javascript. You could easily write your own (it is not too hard), but some very good plugins already exist for jquery. For instance PeriodicalUpdater.

like image 153
nathanvda Avatar answered Sep 28 '22 03:09

nathanvda


Currently, such problems can be solved by using Comet.

For more, http://en.wikipedia.org/wiki/Comet_(programming)

Basically browsers use HTTP which is a stateless protocol and because it only works in a request then response kinda way, we can never really get a real push notification. When wanting to push to the browser we have to somehow mimick that TCP/Socket like connection to push to it. Comet is just a term that is used to define such techniques.

There are many libraries which help in this.eg:- Orbited, Juggernaut on rails.

With new browsers there is something called Websockets Protocol, the libraries I mentioned take advantage of this as well. Its a vast topic, but I am pretty sure, you ll find some basic examples with Juggernaut and Rails.

There is also http://pusherapp.com, that does the same thing but charges money for it.

like image 40
Rishav Rastogi Avatar answered Sep 28 '22 01:09

Rishav Rastogi