我们也是这么做的
求教大小端是什么?
其实没有限定nodejs,其它语言自己适配就好了。
我造轮子其中一点就是不习惯protobuffer的协议,我现在这个的协议是json格式的,更符合js的使用
造轮子有几点把:
1、protobuffer在前端太难用了(两年前是够难用的,现在不知道),存在一定使用成本,而且由于在小程序上没法动态new Function,它和后端在性能等方面区别应该很大。
2、protobuffer的协议存在学习成本,就那个proto我看着就很难受。
3、还有一个最重要的就是,丰富自己的知识储备,不动手我怕永远也不够了解它。
其实这个至于好不好用我也不知道,毕竟连我自己都没用,不过轮子我还是会继续造的。
感谢你的回复

大端:数据的高字节在内存低地址, 小端:数据的高字节在内存高地址。以0x1234这个整数为例 , 大端的话,12的地址比34低, 小端则12的地址比34高。反正我们用的 是大端格式。
其实用啥端无所谓,只要“包装”和“拆包”的协议一致,就行了。
我对这块不熟,求教这个具体要怎么搞,我在百度搜了都是c++、c#、java怎么搞,js应该如何处理这个东西?
前端:
var buffer = new ArrayBuffer(3);
var view = new DataView(buffer);
view.setUint8(1);
view.setUint8(2);
view.setUint8(3);
websocket.send(buffer); //伪代码
后端:
var buffer = websocket.on(); //伪代码
var view = new DataView(buffer);
view.getUint8(); //1
view.getUint8(); //2
view.getUint8(); //3
这样子是数据有可能出错的是么
u8哪来的大小端,只有u16,i32之类的
uint8就是单字节的,不存在大小端的说法,大小端是决定数据的字节在内存排布的,单字节当然大小端都是一致的啦。
DataView 本身就已经抹平了大小端的差异了。只要服务端也用的 Node.js 就行。
,我知道这大小包是咋回事了,搬运点代码,不用DataView试试去
java 有大小端问题
如果嫌弃protobuf太重,google还有其他轮子~
推荐flatbuffers库
他的js实现也就1000多行代码,可以参考下https://github.com/google/flatbuffers/blob/master/js/flatbuffers.js
这句话不太对,如果是node.js,DataView帮你抹平了大小端自然可以不用在意,而其他语言写的服务器,你要明确告诉他你是大端还是小端,他才能适配
例如flatbuffers,它明确规定使用小端
可以看看他的几个函数writeUint16 writeInt32 都没用DataView,而是直接操作字节,转换为小端的字节序列存到Uint8Array里
是,我当时不知道还有大小端这么个事情,我后面把DataView给去掉了,也是直接操作字节了,不过我没有发出来。