3 个版本
0.1.3 | 2023 年 11 月 17 日 |
---|---|
0.1.2 | 2023 年 11 月 17 日 |
0.1.1 | 2023 年 11 月 7 日 |
0.1.0 |
|
#1424 in 网络编程
5KB
DePHY 中的消息传递
dephy-proto
包
在此仓库中,有用于开发者使用 protobuf
定义构建应用程序的包。
cargo add dephy_proto # for Rust
npm install dephy-proto # for Node.js
使用 prost 构建了 Rust crate 并在 crates.io 上发布。
为 Node.js 和 Deno 构建的 JavaScript/TypeScript 包使用 pbkit 构建,并在 NPM 上发布。
直接消息
DePHY 中的 Direct Message
是用于 DePHY 设备和边缘代理之间直接在 Protocol Buffer
编码中通信的消息。
当设备与边缘代理的服务端点(MQTT 或 HTTP)交互时,应将其传输为二进制格式。
通常,DePHY 设备会将 Direct Messages 发送到
mqtt://path.to.dephy.edge:1883
- 主题:
/dephy/signed_message
- 消息的二进制应该是有效载荷
- 主题:
http://path.to.dephy.edge:3883/dephy/signed_message
- 方法:
POST
内容-类型:应用/x-dephy
- 消息的二进制应该是 HTTP 主体
- 方法:
路由消息
DePHY 中的 Routed Message
是一个包裹了 Direct Message
的 NoStr 事件,该消息将由边缘代理在 NoStr
非中心化网络中重新分发。
- 事件的
kind
应该是1111
。 - 内容应该是一个编码为 Base58 的 Direct Message(即
base58(bytes(SignedMessage))
)。 - 它应包含这些标签
c
是路由消息的标记,应始终为dephy
dephy_from
是消息发送者的 DID 字符串dephy_to
是消息接收者的 DID 字符串dephy_edge
是消息转发器的DID字符串
它看起来像这样
{
"id": "...",
"pubkey": "...",
"created_at": 0,
"kind": 1111, // Magic!
"content": "...", // base58(bytes(SignedMessage))
"tags": [
["c", "dephy"],
["dephy_to", "did:dephy:0x..."], // did(direct_message.payload.to)
["dephy_from", "did:dephy:0x..."], // did(direct_message.payload.from)
["dephy_edge", "did:dephy:0x..."], // did(origin_edge)
],
"sig": "..."
}
如果你只是构建与设备和边缘代理交互的应用程序,你不需要关心路由消息。
依赖项
~0.2–2MB
~27K SLoC