2012-04-11 19 views
12

Dopo aver visto Meteor Framework screencast. Ho notato che la modifica del database modifica in modo trasparente i dati nel browser. Solitamente AJAX, ricarica solo una parte della pagina ogni pochi secondi ma qui non ho notato che il browser si ricarica. Come hanno fatto a farlo in Meteor? È dipendente da Node.js?In che modo Meteora aggiorna il browser?

AGGIORNAMENTO: Toby Catlin pone un'altra domanda interessante. In che modo Meteor gestisce diversi browser?

+0

Vedi anche [codice a caldo spinge] (http://meteor.com/blog/2012/02/09/hot-code-pushes) –

risposta

5

Esistono alcune tecniche che consentono al server di inviare dati nel browser senza che il browser debba richiederlo. Il termine per tale tecnologia è Comet [wikipedia.org] e la maggior parte delle tecniche sono correlate ad AJAX (c'era una candeggina chiamata Comet e un prodotto per la pulizia chiamato Ajax). Esistono numerosi tipi di connessione: polling lungo, streaming XHR, frame per sempre, server-send-events e websocket. Socket.IO è una bella libreria che fornisce i tipi di connessione ai server di streaming.

È necessario un server che supporti le connessioni Comet. Puoi google per quelli correnti, ma in cima alla mia testa: node.js, tornado, cometd, orbitato, streaming Jetty

Direi che Metor userebbe diversi tipi di connessione a seconda delle funzionalità del browser, ad esempio websocket per Chrome e polling lungo per IE. Se qualcuno può dare una risposta più specifica sarei interessato

+0

Uso WebSockets non avete bisogno avere il browser che richiede dati, a causa della connessione costante stabilita tra browser e server. Il server è in grado di inviare dati al client per quanto sono connessi. – moka

+0

Se sta usando il socket IO, credo che tornerà al polling lungo per i vecchi browser. Per i nuovi si aprirà una webSocket – climboid

+0

Comet è ora nota da W3C come Server Sent Events (SSE). Vedi: http://stackoverflow.com/questions/1964494/how-to-make-all-connected-browsers-reload-initiated-by-a-server-side-event –

17

Utilizzano entrambi Session e Meteor.autosubscribe (dall'API di Meteor) per garantire che le modifiche si riflettano sui client.

Queste API Meteor utilizzano XHR (XMLHttpRequest) di SockJS. SockJS è un'utilità di emulazione WebSocket. Quindi, quando qualcosa cambia sul server, SockJS assicura che venga inviato un XHR e che i dati modificati siano nella risposta JSON.

Sì, Meteor è completamente dipendente da Node.js. Dalla documentazione Meteor:

applicazione

Una meteora è un mix di JavaScript che viene eseguito all'interno di un browser web client, JavaScript che viene eseguito sul server Meteor all'interno di un contenitore Node.js, e tutti i frammenti di supporto HTML, regole CSS e beni statici. Meteor automatizza l'imballaggio e la trasmissione di questi diversi componenti. Ed è abbastanza flessibile su come si sceglie di strutturare quei componenti nell'albero dei file.

L'unico asset del server è JavaScript. Meteor raccoglie tutti i tuoi file JavaScript, escludendo qualsiasi cosa sotto il client e le sottodirectory pubbliche, e li carica in un'istanza del server Node.js all'interno di una fibra. In Meteor, il codice del server viene eseguito in un singolo thread per richiesta, non nello stile di callback asincrono tipico del nodo. Troviamo che il modello di esecuzione lineare si adatta meglio al tipico codice server in un'applicazione Meteor.

Fonti: http://docs.meteor.com/ e https://github.com/meteor/meteor

Problemi correlati