uniapp中使用mqtt

1,195 阅读1分钟

image.png

参考资料:

什么是 MQTT?- MQTT 协议简介 - AWS (amazon.com)

MQTT 入门介绍 | 菜鸟教程 (runoob.com)

MQTT协议,终于有人讲清楚了 - 知乎 (zhihu.com)

项目使用

1 创建一个uniapp 默认项目,安装mqtt

npm install mqtt@3.0.0

    <view>连接mqtt</view>
    
    <script>
        export default{
            methods:{
                connect() {  
                    var self = this  
                    var subscribe = "test"    
                    var mqtt = require('mqtt/dist/mqtt.js')  
                    // #ifdef H5  
                    let options = {  
                        clientId:"H5_001",  
                        connectTimeout: 5000,  
                        clean: true,
                        username: "",
                        password: ""
                    }  
                    // 此处的端口为mqtt.js中的http端口,否则H5和手机连接不上mqtt服务器  
                    var client = mqtt.connect('wss://127.0.0.1:8085/mqtt',options)  
                    // #endif  
                    // #ifdef MP-WEIXIN||APP-PLUS  
                    let options = {  
                        clientId:"APP_001",  
                        connectTimeout: 5000,  
                        clean: true  
                    }  
                    // 此处需要改成你的主机ip,并保证测试手机跟你的电脑处于同一个局域网  
                    var client = mqtt.connect('wxs://127.0.0.1:8085/mqtt',options)  
                    // #endif  
                    client.on('connect', function(res) {  
                        uni.showToast({  
                            title:"连接成功",  
                            duration:2000,  
                            icon:"none"  
                        })  

                        client.subscribe(subscribe, function(err) {  
                            if (!err) {  
                                uni.showToast({  
                                    title:"订阅成功",  
                                    duration:2000,  
                                    icon:"none"  
                                })  
                            }  
                        })  
                    }).on('message', function(topic, message) {  
                        console.log(JSON.parse(message.toString()))  
                    }).on('reconnect', function(topic, message) {  
                        console.log("重连")  
                    })  
                }
            }
        }
    </script>

2 本地搭建node mqtt服务

  1. 安装

npm install mqtt --save

npm install mosca --save

  1. 创建文件mqtt.js
    var mosca = require('mosca'); //构建服务器  
    // 此处配置mqtt的http客户端,尤为重要,http.port则为你HTTP访问端口,可以在网页上输入127.0.0.1:8085(端口),能请求成功则配置成功  
    var MqttServer = new mosca.Server({  
        port: 8083,  
        http: {  
            port: 8085,  
            bundle: true,  
            static: './'  
          }  
    });  

    //监听链接  
    MqttServer.on("clientConnected", function(client) {  
        console.log("client connected", client.id);  
    });  

    //监听mqtt的主题消息  
    MqttServer.on("published", function(packet, client) { //当客户端有连接的时候,发布主题消息  
        var topic = packet.topic;  
        console.log(packet);  
        switch (topic) {  
            case 'test':  
                console.log("message-publish", packet.payload.toString());  
                //mqtt转发主题消息  
                MqttServer.publish({  
                    topic: 'other',  
                    payload: '这是服务端发过来的消息!'  
                });  
                break;  
        }  
    });  

    MqttServer.on('ready', function() {  
        console.log("mqtt is running....");  
    });

3 几个免费测试地址

协议地址端口路径证书
mqttbroker.hivemq.com8000
mqttbroker.emqx.io1883
wstest.mosquitto.org8080/mqtt
wsstest.mosquitto.org8081/mqttCA signed server