我正在向 Node.js 服务器中收到的消息发送 ack,并且我想将 messageId 回显给客户端。目前我正在将 messageId 从缓冲区解析为字符串并从字符串构建 ack。将 id 解析为字符串并返回是不必要的,但我无法直接使用 stuct 缓冲区构建 ack。
这就是 messageid 作为字符串传入时的工作方式。
function createAck(messageId) {
let builder = new flatbuffers.Builder;
const request = MyServer.MessageAck;
request.startMessageAck(builder);
request.addMessgeId(builder, createUUID(builder, messageId));
const requestMessage = request.endMessageAck(builder);
return builder.finish(requestMessage);
}
function createUUID(builder, messageId) {
let uuidBytes = new Uint8Array(uuidParse.parse(messageId));
let dataview = new DataView(uuidBytes.buffer);
return MyServer.UUID.createUUID(builder,
flatbuffers.Long.create(dataview.getInt32(0, true), dataview.getInt32(4, true)),
flatbuffers.Long.create(dataview.getInt32(8, true), dataview.getInt32(12, true)));
}
我想将 messageId 作为直接从消息中获取的缓冲区传入
request.addMessgeId(builder, messageId);
但我收到一个错误:“FlatBuffers:结构必须内联序列化。”
这是结构:
struct UUID {
low_bytes: ulong;
high_bytes: ulong;
}