基于 Pulsar 获取消息推送(C# SDK)

更新时间:2025-01-23 08:45:19下载pdf

云项目中提供消息订阅功能,当项目中的设备相关状态发生变化时(如设备注册、设备数据上报、设备离线等),开放消息平台通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。

前提条件

操作实践

目前,涂鸦基于开源的 Pulsar 系统进行了定制改进,并提供 C# 版本 Pulsar SDK
本文通过使用 C# 开发工具 Rider 进行消息接收实践。

第一步:克隆 Github 源码导入工程

Github clone:Github

基于 Pulsar 获取消息推送(C# SDK)

第二步:配置项目参数

修改示例代码 Program.cs 里的配置信息:

  • ACCESS_ID:填写云开发平台中 API 授权密钥的 Access ID/Client ID。
  • ACCESS_KEY:填写云开发平台中 API 授权密钥的 Access Secret/Client Secret。
  • PULSAR_SERVER_URL:根据开通消息订阅的数据中心进行选择。
    • 中国数据中心:pulsar+ssl://mqe.tuyacn.com:7285/
    • 美西数据中心:pulsar+ssl://mqe.tuyaus.com:7285/
    • 中欧数据中心:pulsar+ssl://mqe.tuyaeu.com:7285/
    • 印度数据中心:pulsar+ssl://mqe.tuyain.com:7285/
  • MQ_ENV:消息订阅通道
    • MQ_ENV_PROD:正式环境
    • MQ_ENV_TEST:测试环境

第三步:App 端操作设备,测试环境消息接收

  1. 在开发工具 Rider 上,选中 tuya-pulsar-sdk-dotnet 工程,右键单击,并执行 Run

    基于 Pulsar 获取消息推送(C# SDK)

  2. 通过 App 端操作设备。如打开设备的开关,或调整设备参数。

  3. 在开发工具 Rider 上自动获取到消息推送展示。
    基于 Pulsar 获取消息推送(C# SDK)

  4. 数据展示,字段含义请参见文档 消息类型

消息推送信息解析

开启设备

  • 接收的消息

    payload={"data":"uSqWibG1DRsqYj/EWW5xRP4NlAo948wkhatFSvvtl3lgYzHRCUfLB8bAhjohz5jqzQtf9wFhkSQ6IBE2P3yYPmXksA0dqEMhr3RmkClnnfWt9xi+AvqZ5E3OZgI3dkpaD+3oi9XCRpgXXnjyjoyXPxk8qvcNe3J+kdU32jkbjxlzxxG+g6m1fHPH7m4+OHuh8Q09f8Ff1CNONQFvMLfStqmh6zyXimOxTy0x9pIPxUPxHwhUndn4xepP09qbODn0","protocol":4,"pv":"2.0","sign":"16cc5405b1e843bdd6f25063fa8ce330","t":1631158677498}
    payloadJson={
      "data": "uSqWibG1DRsqYj/EWW5xRP4NlAo948wkhatFSvvtl3lgYzHRCUfLB8bAhjohz5jqzQtf9wFhkSQ6IBE2P3yYPmXksA0dqEMhr3RmkClnnfWt9xi+AvqZ5E3OZgI3dkpaD+3oi9XCRpgXXnjyjoyXPxk8qvcNe3J+kdU32jkbjxlzxxG+g6m1fHPH7m4+OHuh8Q09f8Ff1CNONQFvMLfStqmh6zyXimOxTy0x9pIPxUPxHwhUndn4xepP09qbODn0",
      "protocol": 4,
      "pv": "2.0",
      "sign": "16cc5405b1e843bdd6f25063fa8ce330",
      "t": 1631158677498
    }
    
  • 解析 payload 数据

    data={"dataId":"52effb10-111f-11ec-935e-02426139acc4","devId":"vde*******70149816","productKey":"AAi******Tgmo64Hq","status":[{"1":"true","code":"switch_led","t":1631158677476,"value":true}]}
    

    Payload 数据解析方法参见 数据签名和解密。SDK 中已封装 payload 解密方法 。

调整设备参数

  • 接收的消息

    payload={"data":"vJuyzlQPkXrZn/9OSwTOP5bmlNruRVFOZoc1Zod3Ul9gYzHRCUfLB8bAhjohz5jqzQtf9wFhkSQ6IBE2P3yYPmXksA0dqEMhr3RmkClnnfWt9xi+AvqZ5E3OZgI3dkpaD+3oi9XCRpgXXnjyjoyXP4F82++oke4J6O8vAvLCpDxsOTqBLnuQXj9p+sknAK6Z1NAGbES2LQ4fDPlg/ZFqoccIX3s9PhIo9cPZSzctc9MrqoBg1e7jFRfIAiY3bPYx","protocol":4,"pv":"2.0","sign":"53b8014e0c2d445e8dca665a02236100","t":1631158740025}
    payloadJson={
      "data": "vJuyzlQPkXrZn/9OSwTOP5bmlNruRVFOZoc1Zod3Ul9gYzHRCUfLB8bAhjohz5jqzQtf9wFhkSQ6IBE2P3yYPmXksA0dqEMhr3RmkClnnfWt9xi+AvqZ5E3OZgI3dkpaD+3oi9XCRpgXXnjyjoyXP4F82++oke4J6O8vAvLCpDxsOTqBLnuQXj9p+sknAK6Z1NaAGbES2LQ4fDPlg/ZFqoccIX3s9PhIo9cPZSzctc9MrqoBg1e7jFRfIAiY3bPYx",
      "protocol": 4,
      "pv": "2.0",
      "sign": "53b8014e0c2d445e8dca665a02236100",
      "t": 1631158740025
    }
    
  • 解析 Data 数据

    data={"dataId":"782ee45f-111f-11ec-935e-02426139acc4","devId":"vde*******70149816","productKey":"AAi******Tgmo64Hq","status":[{"3":"177","code":"bright_value","t":1631158739964,"value":177}]}