websockets tutorial que onmessage nodejs ejemplo javascript file-upload websocket binary arraybuffer

javascript - tutorial - ¿Cómo enviar arraybuffer como binario a través de Websocket?



websockets php (2)

Gecko11.0 ArrayBuffer ha enviado y recibido soporte para datos binarios.

connection = new WebSocket(''ws://localhost:1740''); connection.binaryType = "arraybuffer"; connection.onopen = onopen; connection.onmessage = onmessage; connection.onclose = onclose; connection.onerror = onerror;

enviando datos binarios:

function sendphoto() { imagedata = context.getImageData(0, 0, imagewidth,imageheight); var canvaspixelarray = imagedata.data; var canvaspixellen = canvaspixelarray.length; var bytearray = new Uint8Array(canvaspixellen); for (var i=0;i<canvaspixellen;++i) { bytearray[i] = canvaspixelarray[i]; } connection.send(bytearray.buffer); context.fillStyle = ''#ffffff''; context.fillRect(0, 0, imagewidth,imageheight); }

Recibiendo datos binarios:

if(event.data instanceof ArrayBuffer) { var bytearray = new Uint8Array(event.data); var tempcanvas = document.createElement(''canvas''); tempcanvas.height = imageheight; tempcanvas.width = imagewidth; var tempcontext = tempcanvas.getContext(''2d''); var imgdata = tempcontext.getImageData(0,0,imagewidth,imageheight); var imgdatalen = imgdata.data.length; for(var i=8;i<imgdatalen;i++) { imgdata.data[i] = bytearray[i]; } tempcontext.putImageData(imgdata,0,0); var img = document.createElement(''img''); img.height = imageheight; img.width = imagewidth; img.src = tempcanvas.toDataURL(); chatdiv.appendChild(img); chatdiv.innerHTML = chatdiv.innerHTML + "<br />"; }

Estoy trabajando en un proyecto con Mozilla Europa. En este proyecto, utilizo websocket de Worlize (lado del servidor) y Mozilla (lado del cliente), Node.js para intentar cargar archivos de un cliente a un servidor.
Mi objetivo actual es enviar un arraybuffer del archivo al servidor. Crear el arraybuffer y enviarlo está bien.
Pero mi servidor me dice que arraybuffer es un mensaje utf8 y no un mensaje binario.

¿Entiendo mal algo? Si no, ¿cómo puedo corregir eso?

Lado del cliente:

reader = new FileReader(); reader.readAsArrayBuffer(file); reader.onload = function(e) { connection.send(e.target.result); };

Lado del servidor:

ws.on(''message'', function(message,flags) { if (!flags.binary) { //some code } else { console.log(''It/'s a binary''); }

Intento con Blob también, mismo resultado. La parte binaria es invisible.