更新时间:2024-09-10 01:49:13
云项目中提供消息订阅功能,当项目中的设备相关状态发生变化时(如设备注册、设备数据上报、设备离线等),开放消息平台通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。
目前,涂鸦基于开源的 Pulsar 系统进行了定制改进,并提供 Node.js 版本 Pulsar SDK。
本文通过使用 Nodejs 开发工具 WebStorm 进行消息接收实践。
单击下载 Pulsar SDK 源码,下载 Zip 包至本地,解压缩即可。
WebStorm 打开源码工程:单击 Open ,查找到上一步下载的解压缩后文件。
添加依赖环境。
crypto-js
:4.0.0 及以上版本
ws
:7.4.5 及以上版本
修改事例代码 example/index.js 文件参数,本文以 测试通道 为例做展示。
const client = new TuyaWebsocket({
accessId: "xt*****ff**n1****8ufo",
accessKey: "479bcb7345******582d9c******4ef7",
url: TuyaWebsocket.URL.CN,
env: TuyaWebsocket.env.TEST, //测试通道
maxRetryTimes: 50,
});
参数说明如下:
accessId
:填写云开发平台中 API 授权密钥的 Access ID。
accessKey
:填写云开发平台中 API 授权密钥的 Access Secret。
url
:具体参数可查看 src/config.ts,务必修改为私有云对应域名地址。
env
:消息订阅通道
TuyaWebsocket.env.PROD
:正式环境TuyaWebsocket.env.TEST
:测试环境maxRetryTimes
:最大重连次数
env
中 TEST 代表测试环境,PROD 代表正式环境。
测试设备所上报的消息会发送至测试通道,以方便您进行设备功能调试。
在开发工具 WebStorm 上,打开终端 Terminal ,执行 yarn 代码。
yarn
yarn example
执行结果:
even@MacBook-Air message-subscription-websocket-master % yarn
yarn install v1.22.11
[1/4] 🔍 Resolving packages...
success Already up-to-date.
$ husky install
husky - not a Git repository, skipping hooks installation
✨ Done in 1.32s.
even@MacBook-Air message-subscription-websocket-master % yarn example
yarn run v1.22.11
$ npm run build && node ./example/index.js
npm WARN lifecycle The node binary used for scripts is /var/folders/jf/_0x1y81n67x979xf09m_cv580000gn/T/yarn--1630917003536-0.5926954827118307/node but npm is using /Users/even/.nvm/versions/node/v14.17.5/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> message-subscription-websocket@0.0.1 build /Users/even/Documents/SDK/Nodejs/message-subscription-websocket-master
> tsc
open
通过 App 端操作设备。
在开发工具 WebStorm 上自动获取到消息推送展示。
数据展示,字段含义请参考文档 消息类型 。
接收的消息
INFO 1630917829404 receive msg, jsonMessage={"messageId":"CLe1/w4QACAA","payload":"eyJkYXRhIjoidUdtTE1YempLczJpT242eWJ6WTBIUk9yemlzYlpiVEJBakIxZnVTcHQzcmF3SXEybUcvZlpUZDlUQ2ltcXBHUHpRdGY5d0Zoa1NRNklCRTJQM3lZUGo2Q3JzcUZFUXZMOVBGZUhwRDlaOUthZHpuRndTUVg2c2dSYTJmMkFORkhEVEM4cFowK2ZMbldnZTdBcVBHNExkeG9iT1BDN2tOcGs5MmhtWGpCMFBFT1oyRHU0TWJQNE5TTjQ5UWNKNE1QRTJsU2hlQ01yZWw5QjE3VFQ4QTQwMFRsdjh5MG5sMDRaTXE1YStpbUxDdmpHSDV0YWxscEkxMFJaeG9mSjcyZiIsInByb3RvY29sIjo0LCJwdiI6IjIuMCIsInNpZ24iOiI5ZjRiNTY1YjY4YjA0ODk2ZWZhODE0MDhkOTQxYzY4NyIsInQiOjE2MzA5MTc1NzYwNDh9","properties":{},"publishTime":"2021-09-06T16:39:36.048+08:00","redeliveryCount":0,"key":"vdevo*******286991"}
解析 payload 数据
the real message data: {
payload: {
data: {
dataId: 'f73709fe-0eed-11ec-8511-024283c73485',
devId: 'vdevo*******286991',
productKey: 'na****z',
status: [Array]
},
protocol: 4,
pv: '2.0',
sign: '9f4b565b68b04896efa81408d941c687',
t: 1630917576048
},
messageId: 'CLe1/w4QACAA',
properties: {},
publishTime: '2021-09-06T16:39:36.048+08:00',
redeliveryCount: 0,
key: 'vdevo*******286991'
}
payload
数据解析方法参考 数据签名。SDK 中已封装 payload 解密方法,具体请查看 src/utils.ts 文件。
接收的消息
INFO 1630917829686 receive msg, jsonMessage={"messageId":"CLe1/w4QAyAA","payload":"eyJkYXRhIjoidEdHZUw4b0NYdXpZdlVnNytUKzlzVmZXUVowQXJuWVM0RlExd2R2a01oTGF3SXEybUcvZlpUZDlUQ2ltcXBHUHpRdGY5d0Zoa1NRNklCRTJQM3lZUGo2Q3JzcUZFUXZMOVBGZUhwRDlaOUthZHpuRndTUVg2c2dSYTJmMkFORkhEVEM4cFowK2ZMbldnZTdBcVBHNExTbFY0VkV2N050WjBUOXdzTTB4c1FlK0dkM2xjRFJqdG9Xa2VIVGFJaHZOUGluNDRBbTI2bTV1V0Z1L2R6a0xUd3hFNTlWdmg5S2tJOUpmTjR3ZTlXUzZycXVOWVJYcTNJN0hZRVBPeGY3OTNpajc5TUZHZUFEMWJLNHo1aWxHeG9vUlRsQjNNdVVFdXdWUmJOWlRJZnZ2YmNjWi9WUjdyOHRhQ3VuQ3QrbGJLVVl3clc1a2ZnZGxQUHlSY25HT013PT0iLCJwcm90b2NvbCI6NCwicHYiOiIyLjAiLCJzaWduIjoiYmEzZGE5NzcyNzBhOTRhOTQ3NmJhNmEzY2RlOWQ0ZTciLCJ0IjoxNjMwOTE3ODI5ODg1fQ==","properties":{},"publishTime":"2021-09-06T16:43:49.885+08:00","redeliveryCount":0,"key":"vdevo*******286991"}
解析 Data 数据
the real message data: {
payload: {
data: {
dataId: '8e8e7a0b-0eee-11ec-8511-024283c73485',
devId: 'vdevo*******286991',
productKey: 'na****jz',
status: [Array]
},
protocol: 4,
pv: '2.0',
sign: 'ba3da977270a94a9476ba6a3cde9d4e7',
t: 1630917829885
},
messageId: 'CLe1/w4QAyAA',
properties: {},
publishTime: '2021-09-06T16:43:49.885+08:00',
redeliveryCount: 0,
key: 'vdevo*******286991'
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈