2012-02-09 10 views
6

Uno dei miei docenti universitari ha sottolineato che sarebbe interessante vedere i WebSocket utilizzati per il trasferimento dei file. Immagino che sarebbe possibile decodificare e codificare un file immagine usando base64, tuttavia sarebbe possibile inviare file JavaScript/CSS tramite WebSocket?Utilizzo di WebSocket per il trasferimento di file

Il server che sto utilizzando è Node.js, e il mio browser è Google Chrome 16.

risposta

8

. È possibile inviare JavaScript e CSS tramite WebSockets (o AJAX). Inoltre, non dovresti avere bisogno di codificare in base64 il CSS e JavaScript come se fosse un'immagine fintantoché il server WebSocket è correttamente in grado di codificare in UTF-8 qualsiasi carattere Unicode speciale nel Javascript.

Una volta ricevuto il JavaScript o CSS tramite WebSocket, è possibile caricare utilizzando il seguente meccanismo (dove tipo è o '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); 
} 

Tale meccanismo potrebbe avere problemi in IE 8 e precedenti, ma dal momento che si utilizzano WebSockets, sospetto che il tuo obiettivo sia un browser moderno. È possibile verificare che la funzione dynamic_load funziona da console JavaScript del browser:

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

È possibile inviare qualsiasi cosa. Non c'è nulla che tu non possa inviare, nemmeno virus. – Pacerier

1

miei node.js ws biblioteca gestisce file di invia - anche quelli binari. Check out uno degli esempi qui, che fa del portfolio: https://github.com/einaros/ws/tree/master/examples/fileapi

Invece di utilizzare WebSockets per la ricezione dei beni pagina web (script, CSS, immagini, ecc), tuttavia, io consiglierei di attaccare con SPDY - che era intenzionalmente realizzato per quello scopo. A proposito, Node.js ha il supporto spdy (vedi https://github.com/indutny/node-spdy).

+0

SPDY è obsoleto e verrà rimosso presto. – Pacerier

Problemi correlati