当前位置:主页 > 查看内容

IoT 物联网平台如何实现 100万/秒 消息广播?

发布时间:2021-04-29 00:00| 位朋友查看

简介:在物联网场景中 常常会有全量设备消息广播诉求。如何把消息瞬间推送到海量在线设备上 阿里云IoT企业物联网实例为开发者提供了 PubBroadcast 接口 可以在秒级触达100万在线设备 使得企业面在面对高并发需求时无后顾之忧。 创建4个设备和广播内容 我们以收款音……

image.png

在物联网场景中 常常会有全量设备消息广播诉求。如何把消息瞬间推送到海量在线设备


阿里云IoT企业物联网实例为开发者提供了 PubBroadcast 接口 可以在秒级触达100万在线设备 使得企业面在面对高并发需求时无后顾之忧。


创建4个设备和广播内容

我们以收款音箱场景消息广播为例 演示全量设备广播功能。

设备和广播消息体

image.png

全量设备广播接口PubBroadcast

image.png

设备端收到的消息报文示例
Topic示例 
/sys/g6palBDnzyT/dk004/broadcast/request/1386995865331441413
Payload示例 
???? volume :?80,
???? mode :?4
}


全量广播开发实战设备端开发IoT物联网平台默认提供全量广播Topic 设备端无需预先订阅 即可接收到云端的广播消息。设备端应用程序代码(Node.js 示例)
//?node?broadcast-device.js
const?mqtt? ?require( aliyun-iot-mqtt );
//1.设备身份三元组 区域
const?options? ?require( ./iot-device-config.json );
//?2.?建立MQTT连接
const?client? ?mqtt.getAliyunIotMqttClient(options);
//系统全量广播?Topic?前缀
const?allBroadcastTopic? ? /sys/${options.productKey}/${options.deviceName}/broadcast/request ;
client.on( message ,?function(topic,?message)?{
????//过滤全量广播消息
????if?(topic.indexOf(allBroadcastTopic)? ?-1)?{
????????console.log( 设备收到全量广播消息: )
????????console.log( \ttopic ? ?topic)
????????console.log( \tmessage ? ?message)
????}
})


iot-device-config.json 设备配置参数

{
????productKey:? g6palBDnzyT ,
????deviceName:? dk004 ,
????deviceSecret:? 424ed56661980c604255507d1b81464e ,
????host:? iot-060a08kg.mqtt.iothub.aliyuncs.com 
}


云端后台开发云端业务系统调用IoT物联网实例的PubBroadcast接口 即可发送广播消息 触达全量在线设备。调用代码示例(Node.js)
//?node?broadcast.js
const?co? ?require( co );
const?RPCClient? ?require( alicloud/pop-core ).RPCClient;
const?options? ?{
????accessKey:? 自己的accessKey ,
????accessKeySecret:? 自己的accessKeySecret 
//1.创建client
const?client? ?new?RPCClient({
????accessKeyId:?options.accessKey,
????secretAccessKey:?options.accessKeySecret,
????endpoint:? https://iot.cn-shanghai.aliyuncs.com ,
????apiVersion:? 2018-01-20 
//?2.构造iot?API
//?这里是POP?API的Action
const?action? ? PubBroadcast ;
//?广播内容
const?payload? ?{
????volume:?80,
????mode:?4
//?完整入参?params
const?params? ?{
????ProductKey:? g6palBDnzyT ,
????IotInstanceId:? iot-064a04kg ,
????MessageContent:?new?Buffer(JSON.stringify(payload)).toString( base64 )
co(function*()?{
????//3.发起全量广播PubBroadcast?API调用
????try?{
????????const?response? ?yield?client.request( PubBroadcast ,?params);
????????console.log( PubBroadcast?成功? ,?JSON.stringify(response));
????}?catch?(err)?{
????????console.log( PubBroadcast?失败? ,?JSON.stringify(err));
????}
});


全量广播联调

业务服务器调用 PubBroadcast API 日志 image.png

image.png

4个设备端收到的广播消息日志

Topic的消息id相同 deviceName不同

image.png


往期推荐


1、39张传感器工作原理GIF图汇总

2、智能手持测温枪开发实践

3、JMeter压测MQTT服务性能实战

4、IoT物联网平台日志服务详解

5、自建MQTT集群迁移阿里云IoT实践

6、工业Modbus电力104规约接入IoT平台

7、设备免烧录三元组 即时注册解决方案

8、IoT TSDB Quick BI 搭建楼宇环境监控

9、JS全栈开发 构建智能家居小程序


image.png


本文转自网络,原文链接:https://developer.aliyun.com/article/783860
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐