2012-07-09 1 views
5

ciao sto cercando di trasferire file. Ho alcuni programmi per convertire file in binario e trasferirli su una rete con C++. Mi stavo chiedendo se sarei stato in grado di trasferire file con javascript e web socket? qualsiasi esempio su come integrare il mio programma C++ in javascript sarebbe apprezzato. Grazie.trasferimento di file con javascript tramite websocket

+0

Sono anche interessato se questo è possibile. – DasBoot

risposta

7

JavaScript dispone di due nuovi tipi di binari: array tipizzati (arraybuffers) e Blobs (file in fondo).

WebSockets supporta l'invio e la ricezione di array e blocchi digitati.

Per trasferire i dati tra due browser utilizzando WebSockets, è necessario un server che li colleghi entrambi (il supporto WebSocket del browser è solo client in questo momento).

Se si dispone di un server esistente in C++ che gestisce il trasporto di file, si dovrebbe essere in grado di aggiungere il supporto del server WebSocket in modo abbastanza semplice. È possibile trovare websocket client e server implementazioni in questa pagina: http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

In JavaScript per stabilire una connessione a un server WebSocket si fa qualcosa di simile:

ws = new WebSocket("ws://100.101.102.103"); 

send() di supporto metodo stringhe normali, digitato array o BLOB. L'invio di array e blob digitati comporterà il frame (s) ricevuti dal server come frame binari (opcode = 2).

ws.send(myTypedArray); 

Per ricevere i messaggi si registra un gestore di messaggi:

ws.onmessage = function (evt) { 
    console.log("Got ws message: " + evt.data); 
}; 

Se il server invia un binario telaio/messaggio quindi la proprietà dei dati onMessage dell'evento conterrà sia una matrice tipizzata o blob seconda l'impostazione dell'attributo binaryType. È possibile modificare il tipo di dati binari ricevuti in questo modo:

ws.binaryType = "blob"; // or "arraybuffer" 
1

Quello che stai cercando di fare non è possibile. WebSocket può funzionare solo in modalità client; non può accettare connessioni da un altro client WebSocket (come un altro browser).

È possibile collegare i client WebSocket tra loro tramite un server, ma a quel punto non è più realmente peer-to-peer, quindi non sono sicuro che sia davvero utile o interessante.

See: Will Websockets allow a server to run in the browser?

+1

grazie, se è possibile fornire esempi su come farlo attraverso un server sarebbe apprezzato. =) – DasBoot