问题标签 [protobuf.js]

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 投票
1 回答
120 浏览

ionic-framework - 使用 protobufjs 和离子电容器 BLE 插件写入 ESP32 GATT 特性时出现写入特性失败错误

从 Angular(使用 Ionic)构建 Android 应用程序以扫描 BLE 设备(ESP32 芯片)并写入其 GATT 特性。使用 Capacitor BLE 插件进行 BLE 通信和 protobufjs 创建消息(因为 ESP32 代码使用 Google 的 Protocol Buffer 机制来接受消息)。应用程序部署在三星 Galaxy Tab A7 上以部署应用程序。执行 BLEClient.write 时出现“写入特征失败”错误消息,并且无法理解失败的原因。这是我的代码(用户单击按钮时调用的 getBLE()):

这是 wifi_config.proto 文件的样子:

我做错了什么?实现相同目标的任何替代方法(通过写入 GATT 特性通过 BLE 将数据发送到 ESP32)?我不想求助于原生 Android 应用程序开发,因为我没有这方面的经验,而且截止日期很短。此外,对 Protocol Buffer 机制不太满意,因此需要一些指导。

0 投票
0 回答
249 浏览

typescript - 从 .d.ts 文件而不是 .js 文件中的 JSDoc 输出类型声明

在 TypeScript 项目中,我有一个foo.d.ts文件和一个带有 JSDoc 注释的foo.js文件。输出类型声明时,我可以强制 TypeScript 使用 中的类型声明foo.d.ts,而不是 中的 JSDoc 注释吗?foo.js

我的问题是 JDSoc 注释有错误,我不能轻易修复它们,因为文件是由外部工具 ( protobuf.js ) 生成的。TypeScript 然后抱怨

生成/foo.js:1:1 - 错误 TS9005:为此文件发出的声明需要使用私有名称“Foo”。显式类型注释可以解除阻止声明发出。

1 导出常量 Foo = (() => {

即使foo.d.ts完全没问题。确实,手动删除 JSDoc 注释可以修复错误,但我更愿意避免在构建过程中执行该步骤。

https://github.com/microsoft/TypeScript/issues/23708#issuecomment-385020854似乎声称foo.d.ts确实应该优先于foo.js

编译器总是在 .js 文件之前选择 .d.ts 文件。因此,如果您有包的声明文件,编译器将不会查看 .js 文件,也不会查看该文件中的 JSDoc 注释。它只会查看 .d.ts 文件。

虽然我希望在导入类型声明时这是真的,但在输出类型声明时它似乎不是真的,就像我正在做的那样。

更新:在我的真实项目中,我确实找到了一种在构建过程中删除评论的简单方法,但与 MWE 不同,它不能修复错误。但是,如果我只是.js在 TypeScript 运行时删除文件,然后手动将副本放入 build/.

MWE

foo.js

foo.d.ts

tsconfig.json

打字稿版本:4.4.2

0 投票
2 回答
65 浏览

node.js - 如何在 NodeJS 中使用 protobufs?

我是 NodeJS 初学者,我正在尝试在 NodeJS 中创建一个 protobuf 对象,但我似乎还不了解这个概念。

我正在使用的 .proto 文件在这里:https ://github.com/meshtastic/Meshtastic-protobufs/blob/ab16c249dd5ed99a26ee3fe76ec84808d53d791a/mesh.proto#L889

我的代码如下所示:

[…]

[…]

但显然,没有创建 protobuf 对象。console.log 格式的调试输出显示ToRadio {}.

我正在寻找有关如何阅读和使用原始文件的“傻瓜原型”解释,以便我可以正确创建对象。

0 投票
0 回答
41 浏览

python - 解码/编码 websocket 从聊天站点接收到的数据

我正在尝试为 ezcapechat.com 构建一个 python websocket 客户端

输出:

b'\xfe\xff\x01\x00\x10\xc9E\x02\x00\x17x\x9c\xe3\xf8\xbc\xed\xf5CF\x81W\xe7\x1e\xdff\x94`\x05\x00<\x16 \x07#'

我该如何解码?

0 投票
0 回答
18 浏览

protocol-buffers - 为什么 Protobuf.js 不使用 DataView API?

我下载了 Protobuf.js 的源代码,到处搜索 DataView 的使用情况,没有任何结果。我想知道该库是否有原因不使用大多数浏览器支持的 DataView API?

跟性能有关系吗?还是只是相对较新的 API?

谢谢!

0 投票
0 回答
19 浏览

typescript - 从 protobuf 获取未定义的导出导入枚举

像这样的代码(带有 webpack 的打字稿):
file1:

文件2:

然后我得到一个错误,namespace1 未定义;
在此处输入图像描述
,控制台输出只有“2”;这意味着 file1 没有被执行。但是,如果我在 file2 中添加一行

代码成功运行,控制台输出“1”和“2”。
我认为这可能可以通过 config webpack 解决,但仍然不知道。所以拜托,你能告诉我如何配置 webpack 或其他方法来避免这个问题吗?

0 投票
0 回答
30 浏览

protocol-buffers - 在 Google Cloud Dataflow UDF 中解析 protobuf


我正在尝试使用 google-provided template 设置一个数据流管道,将 protobufs 从 Pub/Sub 传输到 BigQuery 。
我需要通过 UDF 运行它,但我不确定如何解析传入的消息。加载原型时,例如在下面,我指向哪里?GCS 中的地址?

谢谢!

0 投票
0 回答
11 浏览

javascript - 有人有从 GTFS 实时提要获取 StopTimeUpdate JS 对象的示例吗?

我正在尝试使用带有以下变量的gtfs-realtime.proto从 GTFS 实时提要中获取 JS StopTimeUpdate 对象:

但我收到此错误:

字段 Message.Field .transit_realtime.TripUpdate.StopTimeUpdate.stop_sequence 的非法线路类型:2(预期为 0)未定义

0 投票
1 回答
37 浏览

javascript - Protobuf:将 protobuf 消息从 Javascript 传递到 C++ WebAssembly 模块

我想将 protobuf 消息从 Javascript 传递到 C++ WebAssembly 模块。

我确实收到了,并且可以在 C++ 端成功解析更简单的 protobuf 消息,但是,protobuf 无法解析不太简单的 protobuf 消息。

这是我正在使用的代码:

使用 google-closure-compiler,我将此 protobuf 消息生成器编译为纯 Javascript。我使用此代码将消息传递给 C++ WebAssembly 模块:

我使用以下代码在 C++ 端收到消息:

在 Javascript 控制台中,我看到:“C++:无法解析新的 MyMessage:...”

我想这可能与 Javascript 使用 UTF-16 而 C++ 使用 UTF-8 编码的事实有关(因为只能成功解析 UTF-8 的消息),所以我尝试修复发送和接收像这样:

我修改了 C++ 端的解析,如下所示:

但我仍然收到此错误:“C++ : Failed to parse new MyMessage: ...”

我该如何解决这个问题?

(我使用的是 protobuf 3.19.1(Javascript 和 C++ 端的版本相同)。)

更新:如果我修改我的代码,所以它传递一个简单的字符串作为徽标,那么我可以在 C++ 端成功解析 protobuf 消息:

所以我想问题出在这个领域。原始字符串是 base64 编码的图像。我应该如何处理这个字符串来修复解析?