更新时间:2024-09-11 08:40:13
云项目中提供消息订阅功能,当项目中的设备相关状态发生变化时(如设备注册、设备数据上报、设备离线等),开放消息平台通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。
目前,涂鸦基于开源的 Pulsar 系统进行了定制改进,并提供 C# 版本 Pulsar SDK。
本文通过使用 C# 开发工具 Rider 进行消息接收实践。
单击下载 Pulsar SDK 源码,下载 Zip 包至本地,解压缩即可。
Rider 打开源码工程:单击 New Solution ,创建一个新的方案。
在 New Solution 界面,选中 Console Application 界面,输入方案名称( Solution Name ),Language 选择 C#
,Framework 选择 net5.0
,并单击 Create 创建完成。
复制下载的 源码 至开发项目中的 Program.cs 文件内。
添加依赖包。该项目需要以下依赖包:
选择顶部导航条 Tools > NuGet > Manage NuGet Packages for Solution ,打开 NuGet 管理器。
输入需要安装的包名,选中后,在右侧界面选中对应的 Version 版本号,并单击 + 进行安装。
Newtonsoft.Json 安装界面如下所示:
单击 Install 确认安装。
System.Net.WebSockets 安装界面:
修改示例代码 Program.cs 文件参数,本文以测试通道为例做展示。
// accessId, accessKey,serverUrl,MQ_ENV
private static string ACCESS_ID = "xt*****ff**n1****8ufo";
private static string ACCESS_KEY = "479bcb7345******582d9c******4ef7";
private static string WSS_SERVER_URL = "wss://mqe.tuyacn.com:8285/";
private static string MQ_ENV= MQ_ENV_TEST;
参数说明如下:
ACCESS_ID
:填写云开发平台中 API 授权密钥的 Access ID。
ACCESS_KEY
:填写云开发平台中 API 授权密钥的 Access Secret。
WSS_SERVER_URL
:务必修改为私有云对应域名地址。
MQ_ENV
:消息订阅通道
MQ_ENV_PROD
:正式环境MQ_ENV_TEST
:测试环境在 MQ_ENV
中,MQ_ENV_TEST 代表测试环境,MQ_ENV_PROD 代表正式环境。
测试设备所上报的消息会发送至测试通道,以方便您进行设备功能调试。
在开发工具 Rider 上,选中 Pulsar-demo 工程,右键单击,并执行 RUN。
通过 App 端操作设备。
在开发工具 Rider 上自动获取到消息推送展示。
数据展示,字段含义请参考 消息类型。
接收的消息:
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 解密方法 DecryptByAes。
接收的消息:
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}]}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈