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

传送门:5个视频讲解,30个场景案例汇总
IoT 物联网平台如何实现 100万/秒 消息广播?——实践类_第1张图片
在物联网场景中,常常会有全量设备消息广播诉求。如何把消息瞬间推送到海量在线设备上?
阿里云IoT企业物联网实例为开发者提供了 PubBroadcast 接口,可以在秒级触达100万在线设备,使得企业面在面对高并发需求时无后顾之忧。

创建4个设备和广播内容

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

设备和广播消息体

IoT 物联网平台如何实现 100万/秒 消息广播?——实践类_第2张图片

全量设备广播接口PubBroadcast

IoT 物联网平台如何实现 100万/秒 消息广播?——实践类_第3张图片

设备端收到的消息报文示例:Topic示例:

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 日志:
图片

IoT 物联网平台如何实现 100万/秒 消息广播?——实践类_第4张图片
4个设备端收到的广播消息日志:
Topic的消息id相同,deviceName不同
IoT 物联网平台如何实现 100万/秒 消息广播?——实践类_第5张图片

往期推荐

1、39张传感器工作原理GIF图汇总
2、智能手持测温枪开发实践
3、JMeter压测MQTT服务性能实战
4、IoT物联网平台日志服务详解
5、自建MQTT集群迁移阿里云IoT实践
6、工业Modbus电力104规约接入IoT平台
7、设备免烧录三元组,即时注册解决方案
8、IoT+TSDB+Quick BI 搭建楼宇环境监控
9、JS全栈开发,构建智能家居小程序

物联网平台产品介绍详情:https://www.aliyun.com/produc...

            阿里云物联网平台客户交流群

你可能感兴趣的:(传感器监控小程序物联网开发者)