java Netty-socket
小程序websocket
在数据传输过程有很多方式, 如:文件、json、xml、Buffer、byte等等方式. 数据越小传输的数据也就越快. 但也越麻烦.
java数据类型.
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 前往查看
byte、short、int、long、float、double、boolean、char
arrayBuffer类型
- Int8Array:8位有符号整数,长度1个字节。
- Uint8Array:8位无符号整数,长度1个字节。
- Int16Array:16位有符号整数,长度2个字节。
- Uint16Array:16位无符号整数,长度2个字节。
- Int32Array:32位有符号整数,长度4个字节。
- Uint32Array:32位无符号整数,长度4个字节。
- Float32Array:32位浮点数,长度4个字节。
- Float64Array:64位浮点数,长度8个字节。
arrayBuffer与java数据类型对应
java | arrayBuffer |
---|---|
byte | Uint8Array |
short | Uint16Array |
int | Uint32Array |
float | Float32Array |
double | Float64Array |
但看这个文章的时候, java的byte是有符号类型, 但是我设置为Int8Array的时候字节长对就不对.有大神清楚可以指证下.
小程序发送与解析arrayBuffer
发送
var buffer = new ArrayBuffer(26);
var obj = new DataView(buffer );
obj.setUint8(0, 1); //设置一个Uint8Array 在第0个位置, 值为1 十进制
obj.setUint8(1, 0);
obj.setUint16(2, 12);
obj.setUint32(4, 2323);
obj.setUint32(8, 0);
obj.setUint32(12, 0);
obj.setUint32(16, 0);
obj.setUint32(20, 0);
obj.setUint16(24, 3338);
解析
wx.onSocketMessage(function (res) {
var buffer = res.data;
var dataview = new DataView(buffer);
var ints = new Uint8Array(buffer.byteLength);
var str = '';
for (var i = 0; i < ints.length; i++) {
str += String.fromCharCode(dataview.getUint8(i));
}
console.log(str);
})