2012-02-09 23 views
6

Uno de mis profesores universitarios señaló que sería interesante ver WebSockets utilizado para la transferencia de archivos. Me imagino que sería posible decodificar y codificar un archivo de imagen utilizando base64; sin embargo, ¿sería posible enviar archivos JavaScript/CSS a través de WebSocket al ?Uso de WebSocket para transferencia de archivos

El servidor que estoy usando es Node.js, y mi navegador es Google Chrome 16.

Respuesta

8

. Puede enviar JavaScript y CSS a través de WebSockets (o AJAX para el caso). Tampoco debería necesitar codificar64 base64 CSS y JavaScript como lo haría con una imagen, siempre y cuando el servidor WebSocket esté codificando UTF-8 de forma adecuada cualquier carácter Unicode especial en el Javascript.

Una vez que haya recibido el Javascript o CSS a través de WebSocket, se puede cargar mediante el siguiente mecanismo (donde tipo es bien 'script' o 'css'):

function dynamic_load(type, content) { 
    var elem = document.createElement(type); 
    elem.type = (type === 'script') ? 'text/javascript' : 'text/css'; 
    elem.innerHTML = content; 
    document.getElementsByTagName("head")[0].appendChild(elem); 
} 

Ese mecanismo pueden tener problemas en IE 8 y anterior, pero como está utilizando WebSockets, sospecho que su objetivo son los navegadores modernos. Puede verificar que la función dynamic_load funciona desde la consola de Javascript de su navegador:

dynamic_load('script', "alert('hello world');"); 
+0

Puede enviar cualquier cosa. No hay nada que no puedas enviar, incluso virus. – Pacerier

1

Mis Node.js ws biblioteca se encarga de archivo envía - incluso unos binarios. Mira uno de los ejemplos aquí, que carga: https://github.com/einaros/ws/tree/master/examples/fileapi

En lugar de utilizar websockets para recibir los activos de la página web (scripts, css, imágenes, etc.), sin embargo, recomendaría seguir con SPDY, que fue intencionalmente diseñado para ese mismo propósito. Node.js tiene spdy-support, por cierto (ver https://github.com/indutny/node-spdy).

+0

SPDY está en desuso y se eliminará pronto. – Pacerier

Cuestiones relacionadas