我在套接字上使用Flatbuffers,它在基于NodeJS的客户端和基于GO的服务器之间发送8位二进制缓冲区。 为了支持动态大小的消息,我已经按照另一个stackoverflow线程的建议添加了 我添加了一个32位大小的内容前缀标头,以宣告处理动态大小消息的消息大小。
我不确定我是否已采用最佳方式将32位值转换为8位数组(除了使用按位运算)。我很乐意为优化或其他解决方案提供建议。
const serializedMessage = builder.asUint8Array(); //returns the constructed flatbuffer message in binary format ready to be sent
let result = new Uint8Array(4 + serializedMessage.length); //adding 4 bytes to accomdate the 32 bit size content length
let view = new DataView(result.buffer);
view.setUint32(0, serializedMessage.length, true);
result.set(serializedMessage, 4);
socket.write(Buffer.from(result.buffer));