así que he tenido verdaderos problemas para enviar datos binarios con el socket.io en node.js (Js cliente y Android cliente).

No hay mucha información ni en:

http://socket.io/blog/introducing-socket-io-1-0/

http://socket.io/get-started/chat/

Necesito usar socket io para enviar una matriz binaria, que puedo crear y rellenar.

el único código que dan es la siguiente:

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

Mi respuesta es bellow.

OriginalEl autor chelo_c | 2015-12-03

1 Comentario

  1. 18

    Finalmente lo tengo funcionando con JS y Android ( Java ), por lo que decidí compartirlo con ustedes.

    Vamos a empezar con el Código del Servidor: (Node js)

    var http = require('http');
    
    var app = http.createServer(function ejecute(request, response){});
    var io = require('socket.io').listen(app);
    
    
    io.on('connection', function(socket) {
            socket.on('message', function(data){
                console.log("recieved data:");
                console.log(data);
    
                var bufArr = new ArrayBuffer(4);
                var bufView = new Uint8Array(bufArr);
                bufView[0]=6;
                bufView[1]=7;
                bufView[2]=8;
                bufView[3]=9;
                socket.emit('message',bufArr);
            });
        });
    app.listen(3000);

    Permite saltar en el cliente de Javascript

      var socket = io("http://localhost:3000");
      socket.emit('message', 'hola from js client');
    
      socket.on('message', function(msg){
        var bufView = new Uint8Array(msg);
        console.log(msg)
      });

    Y por último, vamos a mostrar el Android (java) cliente:

        final Socket socket = IO.socket("http://localhost:3000",opts);
    
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                socket.emit("message","hello from java");
            }
        });
    
    
        socket.on("message", new Emitter.Listener() {
    
            @Override
            public void call(Object... args) {
                byte[] bytearray = (byte[])args[0]; //received bytes
    
                for  (byte b : bytearray) {
                    System.out.println("byte"+b);
                }
            }
    
        });
    
       socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {}
    });

    Espero que sea útil para todos ustedes.
    Saludos!

    OriginalEl autor chelo_c

Dejar respuesta

Please enter your comment!
Please enter your name here