Good Ideas

Reverse Ajax: inviare eventi dal webserver al browser

Posted by:

|

On:

|

La notizia che sto per segnalarvi ha stravolto le mie solide basi di programmatore web. Ero convinto che il web funzionasse in una e una sola maniera: il browser invia una richiesta HTTP al web server che risponde inviando la risposta HTTP. A dir il vero una crepa nelle mie convinzioni si era già formata alla nascita di Ajax, ma nonostante la sua natura asincrona, tutto l’impianto poteva ancora reggere.

reverse ajax - comet

Questa sera ho letto di un nuovo progetto su GoogleCode chiamato pi.Comet, una classe javascript che permette al server di lanciare eventi asincroni e trasferire dati in tempo reale al browser in ascolto. In altre parole ci permette di creare un’applicazione Reverse Ajax, per la precisione, un’applicazione Comet.

Chiariamo alcuni concetti. Reverse Ajax è una tecnica che combina la capacità di Ajax di inviare richieste dal client al server e un meccanismo per il quale il server riesce a inviare indietro dati al browser. I meccanismi conosciuti di Reverse Ajax sono tre:

  • Comet, la connessione tra il client e il server è tenuta aperta (un response http senza termine). L’idea è di utilizzare un frame nascosto per inviare dati attraverso questo canale (forever frame). A dir il vero la tecnica si è evoluta e ora si usa l’oggetto XHR in una modalità multi-part, dove ogni parte della risposta è un comanda javascript che il browser valuta.
  • Piggyback, dati aggiuntivi sono inviati nelle tradizionali comunicazioni client/server.
  • Polling, si simula l’invio di eventi da parte del server, continuando a lanciare richieste dal client al server.

Il progetto pi.Comet utilizza delle 3, la tecnica più interessante ed efficace. Comet, poi, può lavorare in due maniere:

  • Streaming: utilizza un’unica, persistente connessione http che è gestita incrementalmente dal browser; ogni volta che il server invia un nuovo evento, il browser lo interpreta ma nessuna delle due parti chiude la connessione
  • Long Polling: utilizza una richiesta per ogni nuovo evento lanciato dal server. Il browser lancia una richiesta http via Ajax e tiene aperta la comunicazione finchè il server non invia nuovi dati. Dopo l’invio, il server chiude la connessione e il browser immediatamente ne riapre un’altra.

Queste sono solo alcune informazioni, giusto per invogliarvi ad approfondire maggiormente l’argomento. E’ possibile vedere un bel esempio di un orologio il cui avanzamento è deciso dal server. Questa sera mi si è aperta una nuova porta, un nuovo modo di poter concepire il web. Lasciatemi un po’ di tempo per inventare un’applicazione web 2.0 che sfrutti questa strabiliante e rivoluzionaria novità.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *