Я пытаюсь декодировать сообщение protobuf со стороны сервера (строка base64) в javascript-объект. Используется для декодирования protobuf.js.Как декодировать protobuf base64 string в js object
Как документ предполагает:
var builder = ProtoBuf.newBuilder({ convertFieldsToCamelCase: true });
var YourMessage = builder.build("YourMessage");
var buffer = ...; // E.g. a buffer received on a WebSocket
var myMessage = YourMessage.decode(buffer);
...
var b64str = ...; // E.g. a string fetched via AJAX
var myMessage = YourMessage.decode64(b64str);
Это, как я пытаюсь сделать это (данные - base64 строкой):
var proto = dcodeIO.ProtoBuf;
var buffer = dcodeIO.ByteBuffer;
var b = buffer.wrap(data,"binary");
var builder = proto.newBuilder({ convertFieldsToCamelCase: true });
builder.define("Events");
var message = builder.build("Events");
var result = message.decode(b); //also try to decode base64 string - message.decode64(data);
Я получаю ошибку
расшифровывают/decode64 неопределенной
Я не вижу в этом коде, где вы загружаете файл proto или текст, который определяет ваш protobuf sche миллиампер У вас должна быть такая строка, как 'ProtoBuf.loadProtoFile (« tests/example1.proto », builder),' рассказывая, где находится ваше определение .proto. Это объясняет, что строитель не создает сообщения и нулевые значения, которые вы получаете –
@PhilipPryde благодарит, я потерял дескриптор. –
Это работало для вас тогда? если так, я отвечу на свой комментарий к ответу ... –