2012-03-17 18 views
6

Estoy desarrollando una pequeña aplicación en Node.js con una base de datos MongoDB, tengo nginx al frente para manejar archivos estáticos y el index.html inicial.¿Es una mala práctica enviar HTML a través de una conexión WebSocket

Cuando visito mi index.html, se cargan todos los archivos javascript/css/img, y se establece una conexión websocket con el servidor node.js.

Inicialmente mi index.html está vacío, debe llenarse con el archivo de plantilla correcto. Una cosa que podría hacer es hacer un ajax normal.

$ .get ('myfile.html') y añádalo a mi contenido. El websocket simplemente maneja los datos de la base de datos.


Ahora que ya tienen una conexión WebSocket abierto el servidor, ¿por qué no sólo la transferencia de la plantilla html junto con los datos de la base de datos, y fusionarla en el cliente.

Los archivos de plantilla son solo pequeños fragmentos de html, ¿por qué perder un http req, verdad?


Tenga en cuenta que esta aplicación solo será utilizada por personas selectivas con soporte de navegador html5 completo. No se requieren situaciones de repliegue.

+0

¿Has probado [Backbone.js] (http://documentcloud.github.com/backbone/)? – cormacrelf

+0

Sí, pero no conseguí que funcionara la función de sincronización. Hay algunos ejemplos en línea, pero parecen complicados para mis necesidades. Ya tengo la mayor parte de la lógica que tengo, solo quiero saber si WebSocket se puede usar para html. –

Respuesta

5

Dado que HTTP es muy adecuado para servir archivos, con almacenamiento en caché potencialmente en varias capas para usted, así que ni siquiera tendrá que enviar contenido html más de una vez a un visitante, definitivamente creo el upsides compensa los inconvenientes. Parece que podría enviar un index.html junto con contenido relacionado y tener las plantillas en su index.html (por ejemplo, como en jQuery templates, que puede usar una etiqueta <script id="fooTemplate" type="text/x-jquery-tmpl">).

Obviamente usted puede enviar las plantillas a través de un WebSocket.

+0

Gracias por la respuesta, eso es exactamente lo que quiero hacer. Incluso ya uso la plantilla jQuery y funciona bastante bien. ¡Estupendo! –

Cuestiones relacionadas