3 个版本

0.1.3 2023 年 11 月 17 日
0.1.2 2023 年 11 月 17 日
0.1.1 2023 年 11 月 7 日
0.1.0 2023 年 11 月 7 日

#1424 in 网络编程

MIT/Apache

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 MessageNoStr 事件,该消息将由边缘代理在 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