我正在向Node.js服务器中的收到消息发送ack消息,并且想要将messageId回显给客户端。目前,我正在将缓冲区的messageId解析为字符串,并从字符串构建ack。将id解析为字符串并返回是不必要的,但我无法直接使用stuct缓冲区构建ack。如何在javascript中使用现有结构缓冲区创建flatbuffers消息
这是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;
}
谢谢,是的,这工作(稍作修改),是一个更好的步骤:'request.addMessageId(builder,MyServer.UUID.createUUID(builder,messageId.lowBytes(),messageId.highBytes())); ' – Mikko