问题标签 [protobufjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
151 浏览

javascript - 有没有办法按标签解码/编码,但在 protobuf.js 中没有任何 .proto 文件或 json 文件?

有没有办法按标签解码/编码,但在 protobuf.js 中没有任何 .proto 文件或 json 文件?
还是其他图书馆?

喜欢:

0 投票
0 回答
61 浏览

json - 为什么推荐使用 .JSON 而不是 protobufjs 的静态代码?

对于 protobufjs 库,他们建议使用 .JSON 而不是静态代码

https://github.com/protobufjs/protobuf.js/tree/master/cli#reflection-vs-static-code

对于生产环境,建议将所有 .proto 文件捆绑到一个 .json 文件中,这样可以最大限度地减少网络请求的数量并避免任何解析器开销(提示:仅适用于 light 库):

但是,我不明白为什么建议这样做:

  1. 对于 JSON 和编译的源代码,网络请求的数量是相同的。换句话说,如果用户将 .proto 文件渲染到一个 .js/.json 文件中,两者都只有一个请求。
  2. 对我来说,“最小”库建议比“轻”库更小

而且,作为一个较小的问题,对我来说,不反射统计代码的“权衡”似乎是错误的——我曾考虑使用反射作为代码气味。我很好奇为什么这被列为权衡。

0 投票
0 回答
307 浏览

protocol-buffers - 如何使用 Protobuf.js 逐条显示每条消息?

基本上,如果我 concat 5 个编码的 protobuf 结果(到一个文件中),我可以得到 2 条消息,但我不能得到 5 条消息。怎么能做到这一点,也许使用encodeDelimitedand decodeDelimited?或者我必须将它编码为使用AllMessages并编码一次并解码一次,就像一个数组......这意味着我无法连接结果?repeatedGenericMessage

所以意思是如果我通过网络发送消息,它必须是一个接一个,每个作为一个独立的消息,但不能一起批处理(或连接)并发送一次?


细节:

我正在使用 Node.js 运行以下命令

写它:

并阅读它:

结果:

所以我可以取回最新的 2 条消息,但无法取回 5 条。

0 投票
0 回答
25 浏览

webrtc - protobufjs 通过 webrtc 数据通道编码的消息

我们使用 protobufjs 对消息进行编码并通过 webrtc 数据通道发送。这是有效的还是需要任何解决方法?

https://www.npmjs.com/package/protobufjs

前任:

0 投票
0 回答
74 浏览

node.js - 无法更新 Firebase 工具 - protobufjs 错误

每隔一段时间,npm 都会提醒我更新firebase-tools,但在尝试更新时出现以下错误。

如您所见,我正在运行 Node v10.24.0。我能够按原样部署我的 Firebase 项目。升级节点可能是一个解决方案——我不知道——但我担心升级到节点 12 会破坏某些东西,所以我宁愿不这样做。

还有其他解决方案吗?

而且,继续使用 firebase-tools v7.23.0 是否真的存在问题,或者我是否缺少某些功能?

0 投票
0 回答
6 浏览

javascript - protobufjs load() 在浏览器中同步执行

我有包含所有消息定义的 proto 文件。我目前正在开发一个 reactjs 项目,我想在 js 代码中动态使用其中的一些原型模型,为此我正在使用protobufjs库。

我有一个函数,我在其中调用protobuf.load()以创建在 proto 文件中定义的类型的新对象。该函数的代码如下所示:

在调用doSomething()时,结果总是返回一个空数组,因为加载函数是异步执行的(据我所知)。

有没有一种干净的方法可以在返回结果之前完成加载?如果 UI 冻结也没关系,这不是问题。

protobufjs 文档指定了另一种语法

在尝试这个时,我得到: Error: illegal token '<' (models.proto, line 1)

在使用 js 时,我是一个新手。在这个问题上的任何帮助都会有很大帮助。提前致谢!

0 投票
0 回答
9 浏览

proto - `{}` 在 rpc 声明中的意义

在浏览 protobufjs 和 google protobuf 官方指南的文档时,我注意到两者描述的 rpc 声明之间存在语法差异 -

  • 谷歌 protobuf 指南 -
  • ProtobufJS 指南 -

注意最后的区别{}

这有什么意义?它会导致不同的代码行为吗?

参考 -

0 投票
0 回答
10 浏览

protobufjs - 如何使 protobufjs 生成的代码更小

protobufjs 生成的代码对于移动案例中的前端案例来说太大了。使用 3 个短 proto 文件时大约有 300kb。

用于生成 es6 的 Bash:

0 投票
1 回答
26 浏览

node.js - protobufjs load from string

I get a .proto definition as a string input, can I load it into a Root object straight from the string, for example the string might look like this

And I want to be able to load it

0 投票
0 回答
14 浏览

protocol-buffers - 将每个 protobuf 文件合并为一个“combined.proto”

我已经广泛寻找这个问题的良好解决方案。我很擅长写剧本。

出于各种原因,我想将这里的每个 .proto 文件组合成一个“combined.proto”。

我在这里找到的其他答案与我的问题不匹配 - 一些帮助将不胜感激。