会飞的小白鼠
会飞的小白鼠
  • 发布:2019-08-24 17:09
  • 更新:2023-07-25 17:55
  • 阅读:9360

uni-app中使用阿里云MQTT,Dome分享,仅限APP端

分类:uni-app

var $mqtt = require("@/common/js/mqttws31.js");
var $crypto = require("@/common/js/crypto-js.js");
var instanceId = 'xxxxxxxxxx'; //实例 ID,购买后从控制台获取
var host = 'xxxxxxxxxx.mqtt.aliyuncs.com'; // 设置当前用户的接入点域名,接入点获取方法请参考接入准备章节文档,先在控制台创建实例
var port = 80; //WebSocket 协议服务端口,如果是走 HTTPS,设置443端口
var topic = 'Topic_xxxxxxxxxx'; //需要操作的 Topic,第一级父级 topic 需要在控制台申请
var useTLS = false; //是否走加密 HTTPS,如果走 HTTPS,设置为 true
var accessKey = 'xxxxxxxxxx'; //账号的 AccessKey,在阿里云控制台查看
var secretKey = 'xxxxxxxxxx'; //账号的的 SecretKey,在阿里云控制台查看
var cleansession = true;
var groupId = 'GID_xxxxxxxxxx'; //MQTT GroupID,创建实例后从 MQTT 控制台创建
var clientId = groupId '@@@00001'; //GroupId@@@DeviceId,由控制台创建的 Group ID 和自己指定的 Device ID 组合构成
var mqtt;
var reconnectTimeout = 2000;
var username = 'Signature|' accessKey '|' instanceId; //username和 Password 签名模式下的设置方法,参考文档 https://help.aliyun.com/document_detail/48271.html?spm=a2c4g.11186623.6.553.217831c3BSFry7
var password = "";
export default {
data() {
return {
mecont: []
}
},
onLoad() {
password = $crypto.HmacSHA1(clientId, secretKey).toString($crypto.enc.Base64);
MQTTconnect(this);
},
methods: {

    }  
}  

function MQTTconnect(_this) {  
    mqtt = new $mqtt.Client(  
        host, //MQTT 域名  
        port, //WebSocket 端口,如果使用 HTTPS 加密则配置为443,否则配置80  
        clientId //客户端 ClientId  
    );  
    var options = {  
        userName: username,  
        password: password,  
        useSSL: useTLS, //如果使用 HTTPS 加密则配置为 true  
        onSuccess: function onConnect() { //连接成功  
            _this.mecont.push(new Date()   ": "   "连接成功");  
            // Connection succeeded; subscribe to our topic  
            //订阅消息  
            mqtt.subscribe(topic   "/subDemo1", {  
                qos: 0  
            });  
            //测试消息推送  
            var message = new $mqtt.Message("APP测试消息推送!!"); //set body  
            message.destinationName = topic; // set topic  
            // //发送 P2P 消息,topic 设置方式参考https://help.aliyun.com/document_detail/96176.html?spm=a2c4g.11186623.6.586.694f7cb4oookL7  
            // message = new $mqtt.Message("Hello mqtt P2P Msg!!"); //set body  
            // message.destinationName = topic   "/p2p/"   clientId; // set topic  
            mqtt.send(message);  
        },  
        onFailure: function(message) { //连接失败  
            _this.mecont.push(new Date()   ": "   "连接失败"   JSON.stringify(message));  
            //连接失败,重新连接  
            setTimeout(MQTTconnect, reconnectTimeout);  
        }  
    };  
    mqtt.onConnectionLost = function onConnectionLost(response) {  
        _this.mecont.push(new Date()   ": "   "连接中断"   JSON.stringify(response));  
        //连接失败,重新连接  
        setTimeout(MQTTconnect, reconnectTimeout);  
    };  
    mqtt.onMessageArrived = function onMessageArrived(message) {  
        var topic = message.destinationName;  
        var payload = message.payloadString;  
        _this.mecont.push(new Date()   ": "   "收到新消息"    topic   "   "   payload);  
    };  
    mqtt.connect(options);  
}
1 关注 分享
1***@qq.com

要回复文章请先登录注册

世界太真实

世界太真实

ios 打包提示 连接超时 真机演示没问题
2023-07-25 17:55
世界太真实

世界太真实

回复 4***@qq.com :
请问解决了吗
2023-07-25 17:51
世界太假

世界太假

回复 世界太假 :
期待有人回复下
2021-09-14 15:49
世界太假

世界太假

TypeError: Cannot use 'in' operator to search for 'WebSocket' in undefined
启动报这个错误
2021-09-14 15:30
4***@qq.com

4***@qq.com

小程序端可以接入嘛 ?
2021-07-14 10:56
4***@qq.com

4***@qq.com

请问一下 ios打包后为什么一直提示连接超时啊
2020-08-24 13:02
会飞的小白鼠

会飞的小白鼠 (作者)

回复 博育 :
https://ext.dcloud.net.cn/plugin?id=854 使用这个试试
2020-05-12 14:35
博育

博育

请问下,ios掉包严重怎么解决,安卓不会
2020-04-17 15:25
会飞的小白鼠

会飞的小白鼠 (作者)

回复 DCloud_UNI_GSQ :
在V3编译模式时,MQTT连接不上
2020-03-01 11:18
2***@qq.com

2***@qq.com

ReferenceError: Can't find variable: window
2020-02-18 21:44