How send arraybuffer as binary via Websocket?

后端 未结 2 946
悲哀的现实
悲哀的现实 2020-12-23 21:26

I am working on a project with Mozilla Europe. In this project, I use websocket by Worlize (server-side) and Mozilla (client side), Node.js to try to upload files from a cli

相关标签:
2条回答
  • 2020-12-23 22:08

    Gecko11.0 ArrayBuffer send and receive support for binary data has been implemented.

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

    sending Binary data:

    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 );
    }
    

    Recieving Binary Data:

    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 />";
    }
    
    0 讨论(0)
  • 2020-12-23 22:10
    Note: Prior to version 11, Firefox only supported sending data as a string.
    

    Source: https://developer.mozilla.org/en/WebSockets/Writing_WebSocket_client_applications

    0 讨论(0)
提交回复
热议问题