2012-02-02 49 views
35

Short: Esiste un modo per inviare dati dal server a una sessione utente connessa senza che l'utente debba effettuare una richiesta HTTP?Notifiche push da server a utente con PHP/JavaScript

Long (er): Sto costruendo un'applicazione HTML5, su un server Apache/PHP/MySQL, che può essere fornita agli utenti su dispositivi mobili (o forse tramite un'applicazione PhoneGap).

Vorrei far sapere all'utente quando sono disponibili nuove informazioni dall'applicazione, senza accumulare eccessivi costi di dati obbligando l'utente a eseguire una chiamata al server o richiedendo chiamate AJAX (sì, so che potrebbe controlla un cookie a byte singolo, ma preferirei renderlo zero).

Un buon esempio di questo sarebbe l'invio di messaggi di chat tra due utenti su invio da un utente all'altro.

+0

Sto facendo le mie ricerche su WebSocket grazie al feedback che ho ricevuto. Ho trovato un fantastico tutorial su: http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today – Collius

+0

Perché è stato chiuso? È una vera domanda ... –

+1

È una domanda reale, ma ampia e non chiara.Una risposta "ovvia" sarebbe "ofcourse", come sicuro, ci sono modi per inviare dati da un server senza usare HTTP, ad esempio usando QUALSIASI altro protocollo. Il problema sembra essere "eccessiva carica di dati", ma come potrebbe risolvere un altro protocollo? Sembra che "socket" sia la risposta, ma non è una cosa ovvia da suggerire in base al contenuto della domanda secondo me .. Forse se la domanda viene chiarita un po '? – Nanne

risposta

28

Nei browser moderni, Websockets o nei browser meno recenti, "long polling". Ci sono anche librerie che possono astrarre alcune di queste (come comet).

Una libreria molto comune in uso ora è socket.io che si collega automaticamente con la migliore tecnologia disponibile, utilizzando webSockets se disponibile e ricadendo su altre tecnologie come il polling lungo se non disponibile.

Alcuni altri riferimenti:

How do I implement basic "Long Polling"?

COMET (server push to client) on iPhone

More on Long Polling

Is there a difference between long-polling and using Comet

Pushing the web with websockets

Oh HTML5, Push Data to my Mobile

+1

Superbamente utile. Inizierò a fare i compiti su Websockets ASAP. – Collius

+0

Aggiunto il riferimento socket.io che ora è molto utile. – jfriend00

4

vi consiglio Socket.io

Esso sfrutta

WebSocket, FlashSocket, HTML del file (per IE), XHR-polling lungo, JSONP-polling

È con Node.js il che significa che è di natura non bloccante.

In funzione in tempo reale, la concorrenza è un grande problema

così la natura non-blocking di Node.js e Socket.io potrebbe aiutare a

+0

Sono diffidente nei confronti di Node.js, ma questo è molto utile. Grazie! – Collius