2012-04-11 9 views
12

Habiendo visto Meteor Framework screencast. Noté que al cambiar la base de datos, los datos se cambian a la perfección en el navegador. Por lo general, AJAX, simplemente recarga una parte de la página cada pocos segundos, pero aquí no noté la recarga del navegador. ¿Cómo lograron eso en Meteor? ¿Es dependiente de Node.js?¿Cómo actualiza el meteorito el navegador?

ACTUALIZACIÓN: Toby Catlin plantea otra pregunta interesante. ¿Cómo maneja Meteor diferentes navegadores?

+0

Véase también [empuja código caliente] (http://meteor.com/blog/2012/02/09/hot-code-pushes) –

Respuesta

5

Existen algunas técnicas que permiten al servidor ingresar datos en el navegador sin que el navegador tenga que solicitarlo. El término para dicha tecnología es Comet [wikipedia.org] y la mayoría de las técnicas están relacionadas con AJAX (había un blanqueador llamado Comet y un producto de limpieza llamado Ajax). Hay varios tipos de conexión: sondeo largo, XHR de transmisión por secuencias, fotograma para siempre, eventos de envío de servidor y websockets. Socket.IO es una buena biblioteca que proporciona tipos de conexión a servidores de transmisión.

Necesita un servidor que admita conexiones Comet. Puedes googlear para los actuales pero fuera de mi cabeza: node.js, tornado, cometd, orbited, Jetty streaming

Supongo que Metor usaría diferentes tipos de conexión dependiendo de las capacidades del navegador, por ejemplo, websocket para Chrome y encuestas largas para IE. Si alguien puede dar una respuesta más específica, me interesaría

+0

Uso de WebSockets que no necesita tener un buscador solicitando datos, debido a la conexión constante establecida entre el navegador y el servidor. El servidor puede enviar datos al cliente siempre que estén conectados. – moka

+0

Si está utilizando socket IO, creo que se recurrirá a un largo sondeo para navegadores antiguos. Para los nuevos, se abriría un webSocket – climboid

+0

Comet es ahora conocido por W3C como Server Sent Events (SSE). Ver: http://stackoverflow.com/questions/1964494/how-to-make-all-connected-browsers-reload-initiated-by-a-server-side-event –

17

Utilizan tanto Session como Meteor.autosubscribe (de Meteor API) para garantizar que los cambios se reflejen en los clientes.

Estas API Meteor utilizan XHR (XMLHttpRequest) de SockJS. SockJS es la utilidad de emulación WebSocket. Entonces, cuando algo cambia en el servidor, SockJS asegura que se envía un XHR, y los datos modificados están en la respuesta JSON.

Sí, Meteor depende por completo de Node.js. A partir de los documentos de meteoros:

aplicación

un meteoro es una mezcla de JavaScript que se ejecuta dentro de un navegador web del cliente, JavaScript que se ejecuta en el servidor Meteor dentro de un contenedor de Node.js, y todos los que apoyan fragmentos HTML, reglas CSS y activos estáticos. Meteor automatiza el embalaje y la transmisión de estos diferentes componentes. Y, es bastante flexible sobre cómo elige estructurar esos componentes en su árbol de archivos.

El único recurso del servidor es JavaScript. Meteor recopila todos tus archivos JavaScript, excluyendo todo lo que está debajo del cliente y los subdirectorios públicos, y los carga en una instancia del servidor Node.js dentro de una fibra. En Meteor, el código de su servidor se ejecuta en una sola cadena por solicitud, no en el estilo de devolución de llamada asincrónico típico de Node. Encontramos que el modelo de ejecución lineal se ajusta mejor al código de servidor típico en una aplicación Meteor.

Fuentes: http://docs.meteor.com/ y https://github.com/meteor/meteor

Cuestiones relacionadas