2014-06-05 15 views
9

Ho esaminato tutti i documenti Socket.IO, ma, anche se promettono che è lì, non riesco a trovare un semplice esempio minimo di come si invierebbero dati binari tra server/client.Come inviare dati binari da un server socket.io Node.js a un client browser?

Come è fatto?

+0

[qui] (http://stackoverflow.com/a/24124966/2600208) è un esempio di come inviare un'immagine come un buffer dal server e renderlo in un HTML5 Canvas su un client. – Curious

+0

@Viclib Hai fatto questo? si prega di condividere..!!! –

+0

Ah, ho, ho dimenticato come a questo punto, mi dispiace per non aver aggiornato. Ma per quanto mi ricordo, tutto ciò che devi fare è ottenere un buffer da un oggetto Float32Array (o simile) (qualcosa del genere: 'myData = new Float32Array ([1,2,3,4]). Buffer;' e inviandolo tramite 'socket.io', ovvero,' socket.emit ("foo", myData) '. Lo considera automaticamente come dati binari, quindi, dall'altra parte, è necessario convertirlo di nuovo:' socket.on ("foo", function (data) {data = new Float32Array (data);}) '. L'ho scritto per memoria, però, ma ricordo che c'era un esempio sul post del blog sul rilascio di' socket. io' 1.0. – MaiaVictor

risposta

9

È in effetti nella documentazione. La documentazione corrente per Socket.io dice in Socket.emit:

[...] Emette un evento nel socket identificato dal nome della stringa. È possibile includere qualsiasi altro parametro . Tutte le strutture sono supportate, incluso Buffer [...]

Quindi, se è possibile inviare un buffer, è possibile inviare dati binari. Tutto quello che devi fare è mettere i tuoi dati in un oggetto Buffer.

Si consiglia di leggere Socket.io Binary Support e Sending and Receiving Binary

+4

Ah, questo è quello che mi mancava, quindi, stavo cercando male, è automatico, quindi? Se invio un Float32Array andrà solo come binario, invece di essere serializzato su JSON? – MaiaVictor

+0

anche questo è quello che mi sto chiedendo –

1

A partire da socket.io 1.0 è possibile inviare i dati binari. http://socket.io/blog/introducing-socket-io-1-0/

In ogni caso il modo di inviare e ricevere dati binari non è chiaro nella documentazione ufficiale. L'unica documentazione è:

var socket = new WebSocket('ws://localhost'); 
socket.binaryType = 'arraybuffer'; 
socket.send(new ArrayBuffer); 

vi consiglio di dare un'occhiata a questa risposta, dove si possono trovare esempio di base con l'attuazione del codice per server e client (JavaScript e Java troppo):

How to send binary data with socket.io?

La parte buona è che funziona anche su Android! (se lo si desidera)

Acclamazioni

Problemi correlati