2011-01-20 1 views
6

Voglio creare un sistema di notifica push come Facebook. Ogni volta che Facebook vuole dirti una cosa (come quella che qualcuno ha commentato un post, taggarti, ecc.), Vedrai apparire una piccola notifica nell'angolo in basso a sinistra dello schermo. Si attenua e svanisce.notifiche push-style simili a Facebook con Rails e jQuery

Come si costruisce un sistema come questo con jQuery e Rails? Come funziona anche? JS chiede costantemente al server "c'è una nuova notifica?" oppure il server in qualche modo invia a questo servizio.

In questo momento, se un utente invia a un altro utente un messaggio (ad esempio), posso aggiungere una notifica alla coda dell'utente dicendo "hai un nuovo messaggio", ma non apparirà fino a quando una pagina non si ricarica.

risposta

6

sembra davvero interessante, l'ho visto molto tempo fa, ora è stato riscritto su node.js. Bello. Devi installare redis e node.js ed eseguire un server node.js e il resto è semplicissimo.

Anche Pusherapp.com sembra interessante, sta pagando, ma almeno non è necessario installare ed eseguire servizi extra (e eseguirne il demone, ridimensionarli, ...).

Ma, se il carico non è troppo grande, io preferirei mantenere le cose semplici, e proprio sondaggio utilizzando JavaScript. Si potrebbe facilmente scrivere il proprio (non è troppo difficile), ma esistono già alcuni ottimi plugin per jquery. Ad esempio PeriodicalUpdater.

4

Attualmente, tali problemi possono essere risolti utilizzando Comet.

Per di più, http://en.wikipedia.org/wiki/Comet_(programming)

Fondamentalmente i browser utilizzare HTTP, che è un protocollo stateless e perché funziona solo in una richiesta poi risposta pò modo, non possiamo mai realmente ottenere un vero e proprio spinta notifica. Quando vogliamo spingere al browser, dobbiamo in qualche modo imitare quella connessione TCP/Socket per spingerla. Cometa è solo un termine che viene utilizzato per definire tali tecniche.

ci sono molte librerie che aiutano nella this.eg:- orbitava, Juggernaut su rotaie.

Con i nuovi browser c'è una cosa chiamata WebSockets protocollo, le librerie che ho citato approfittare di questo pure. È un argomento vasto, ma sono abbastanza sicuro, troverai alcuni esempi di base con Juggernaut e Rails.

C'è anche http://pusherapp.com, che fa la stessa cosa, ma carica soldi per questo.

2

Un altro modo in cui un sacco di siti ottenere caratteristiche come questo è Bosh, o flussi bidirezionali oltre http sincrono:

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

Ecco una delle poche librerie JavaScript là fuori:

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

Questo tipo di configurazione richiede un server XMPP/bosh sul backend, ma in fondo il browser in possesso di una connessione aperta (estremamente simile a cometa) e come i messaggi sono disponibili nella fronte li li elabora.

Questa tecnica può essere utilizzata per notifiche, chat e praticamente tutto ciò che si desidera che accada in tempo reale.