如何使用 socket.io 发送二进制数据?

How to send binary data with socket.io?(如何使用 socket.io 发送二进制数据?)
本文介绍了如何使用 socket.io 发送二进制数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

所以我在 node.js(Js 客户端和 Android 客户端)中使用 socket.io 发送二进制数据时遇到了问题.

so I have been having real trouble sending binary data with socket.io in node.js (Js client and Android client).

没有太多信息:

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

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

我需要使用 socket io 来发送我创建和填充的二进制数组.

I need to use socket io to send a binary array, that I create and fill.

他们给出的唯一代码如下:

the only code they give is the following:

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

我的答案如下.

推荐答案

终于可以在 JS 和 Android ( Java ) 上运行了,所以我决定和大家分享一下.

Finally I have it working with JS and Android ( Java ), so I decided to share it with you guys.

让我们从服务器代码开始:(Node js)

Let's start with the Server Code: (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);

让我们跳到 Javascript 客户端

Lets jump on to the Javascript client

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

最后,让我们展示一下 Android (java) 客户端:

And finally, let's show the Android (java) client:

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

希望对大家有用.干杯!

I hope it is useful to you all. Cheers!

这篇关于如何使用 socket.io 发送二进制数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)