javascript - 如何将protobuf base64字符串解码为js对象

标签 javascript protocol-buffers protobuf.js

我尝试将 protobuf 消息从服务器端(base64 字符串)解码为 javascript 对象。用于解码protobuf.js .

正如医生建议:

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);

我收到错误

decode/decode64 undefined

最佳答案

缺少导入原型(prototype)定义的行,如下所示(其中tests/example1.proto是您的文件名)

ProtoBuf.loadProtoFile("tests/example1.proto", builder);

或者如果从原始字符串加载

ProtoBuf.loadProto(...protoString..., "example1.proto");

如果没有这个,构建器会说未定义,因为它没有任何东西可以用来构建其定义

关于javascript - 如何将protobuf base64字符串解码为js对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37679554/

相关文章:

java - 高性能序列化 : Java vs Google Protocol Buffers vs . ..?

node.js - 在项目中安装pbjs后找不到pbjs命令

javascript - 使用 jQuery 删除 <table> 中的当前行

javascript - 打字时暂停音频,停止时播放

javascript - 用于在 jquery.tablesorter.js 数字字段中拨号的正则表达式

c# - 二进制对象图序列化

用于创建单例或保留变量引用的 JavaScript 方法

kotlin - 未解析的引用 : protoc - when using Gradle + Protocol Buffers

javascript - protobuf.js 将 proto 文件转换为 JSON 描述符,重复会丢失

javascript - 使用 Promise 和 async 进行 protobufjs 加载调用