编解码举例 - Protobuf

    比如,将 “name” 字段为 “Shawn” 的消息重新发布到主题 “person/Shawn”。

    在 EMQX 的 Dashboard (opens new window) 界面,使用下面的参数创建一个 Protobuf Schema:

    1. Schema:下面的 protobuf schema 定义了一个 Person 消息。

    使用刚才创建好的 Schema 来编写规则 SQL 语句:

    这里的关键点在于 :

    • schema_decode 函数将 payload 字段的内容按照 ‘protobuf_person’ 这个 Schema 来做解码;
    • 将解码后的值保存到变量 “person” 里;
    • 最后一个参数 Person 指明了 payload 中的消息的类型是 protobuf schema 里定义的 ‘Person’ 类型。
    • 目的主题:person/${person.name}
    • 消息内容模板:${person}

    这个动作将解码之后的 “person” 以 JSON 的格式发送到 这个主题。其中${person.name} 是个变量占位符,将在运行时被替换为消息内容中 “name” 字段的值。

    规则创建好之后,就可以模拟数据进行测试了。

    下面的代码使用 Python 语言填充了一个 Person 消息并编码为二进制数据,然后将其发送到 “t/1” 主题。详见 。

    1. 安装 python 依赖,并执行设备端代码:

    1. 检查 Websocket 端收到主题为 的消息: