2012-09-01 8 views
19

Esiste un problema su come condividere i buffer tra node.js e il browser contenente i dati binari. Sono abbastanza contento dello Socket.io come livello di trasporto, ma il problema è che non esiste il porting di Buffer class per il browser. Non qualcosa che riesco a trovare comunqueCondivisione del buffer binario tra il server Node.js e il browser

Mi sono anche imbattuto in binary.js e mi chiedevo se c'è un buon modo per combinarli avendo il socket.io come il livello di trasporto e il Binary.js come supporto dati. Ho visto anche questo question, che è una specie di argomento, ma in realtà non risolve il problema.

So che socket.io ha aggiunto il supporto binario ma non ho trovato alcuna documentazione sull'argomento.

Aggiornamento:

Sembra che binary.js non sarà la soluzione. Il requisito di base che voglio è condividere le stesse funzionalità di Buffer nel nodo con il browser.

I miei bisogni sono costituiti da due cose:

  1. Maneggiare il buffer nello stesso modo in entrambi i server e il browser.

  2. supporto dati binari.

Probabilmente userò il Buffer di Array.

Modifica: Poiché node.js viene eseguito su V8, è possibile utilizzare ArrayBuffer. Sembra che il problema sia risolto. Eppure, da quello che so, i nodi hanno deciso che è una buona idea creare un modulo buffer e gestirlo nelle associazioni C che hanno creato (da un discorso di Ryan Dahl). Penso che questo abbia a che fare con il buffering sulla rete. Ciò significa che ArrayBuffer non è ancora un buon supporto dati da condividere tra server e browser.

+1

Non capisco quale sia esattamente il problema. Che funzionalità ti interessa esattamente che non esiste nel browser? –

+0

Le mie esigenze consistono in due cose: 1. Gestire il buffer nello stesso modo in Server e Browser. 2. Supporto dati binari. – qballer

+0

Usa DataView e ArrayBuffer – Chiguireitor

risposta

8

browser-buffer emula l'API Buffer del Node nel browser.

È supportato da un Uint8Array, quindi browser support è approssimativo.

+0

Questo è il tipo di risposta che sto cercando, il fatto è che è ancora molto instabile. – qballer

+0

Sì, c'è pochissima attività nel progetto; sembra che sia il codice sperimentale di qualcuno. Lo userei come buon punto di partenza: dovrai forchetta e migliorare il codice. – josh3736

2

Le stringhe incorporate di JavaScript utilizzano caratteri larghi internamente. Così possono facilmente memorizzare un valore da 0 a 255 in ogni posizione del personaggio. Questa è una funzione di linguaggio JavaScript, quindi dovrebbe funzionare allo stesso modo in un browser o in node.js.

È possibile utilizzare charCodeAt per estrarre il valore di una particolare posizione in una stringa e fromCharCode per creare un personaggio (che è possibile aggiungere a una stringa) con un valore da 0 a 255.

È possibile utilizzare il varie funzioni di stringa per manipolare i dati in questo modulo. È possibile creare costanti utilizzando costanti di stringa JavaScript come questa "\x00\x12\x34\x56".

Problemi correlati