• JavaScript使用MQTT


    1、MQTT Server使用EMQTTD开源库,自行安装配置;
    2、JS使用Websocket连接通信。
    3、JS的MQTT库为paho-mqtt,git地址:https://github.com/eclipse/paho.mqtt.javascript.git
     
    代码如下:
    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <title></title>
        <!-- <script src=“https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js” type=“text/javascript”> </script> -->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
    
        <script>
            var hostname = '127.0.0.1', //'192.168.1.2',
                port = 8083,
                clientId = 'client-mao2080',
                timeout = 5,
                keepAlive = 100,
                cleanSession = false,
                ssl = false,
                // userName = 'mao2080',  
                // password = '123',  
                topic = '/World';
            client = new Paho.MQTT.Client(hostname, port, clientId);
            //建立客户端实例  
            var options = {
                invocationContext: {
                    host: hostname,
                    port: port,
                    path: client.path,
                    clientId: clientId
                },
                timeout: timeout,
                keepAliveInterval: keepAlive,
                cleanSession: cleanSession,
                useSSL: ssl,
                // userName: userName,  
                // password: password,  
                onSuccess: onConnect,
                onFailure: function (e) {
                    console.log(e);
                    s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onFailure()}";
                    console.log(s);
                }
            };
            client.connect(options);
            //连接服务器并注册连接成功处理事件  
            function onConnect() {
                console.log("onConnected");
                s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onConnected()}";
                console.log(s);
                client.subscribe(topic);
            }
    
            client.onConnectionLost = onConnectionLost;
    
            //注册连接断开处理事件  
            client.onMessageArrived = onMessageArrived;
    
            //注册消息接收处理事件  
            function onConnectionLost(responseObject) {
                console.log(responseObject);
                s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onConnectionLost()}";
                console.log(s);
                if (responseObject.errorCode !== 0) {
                    console.log("onConnectionLost:" + responseObject.errorMessage);
                    console.log("连接已断开");
                }
            }
    
            function onMessageArrived(message) {
                s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onMessageArrived()}";
                console.log(s);
                console.log("收到消息:" + message.payloadString);
            }
    
            function send() {
                var s = document.getElementById("msg").value;
                if (s) {
                    s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", content:" + (s) + ", from: web console}";
                    message = new Paho.MQTT.Message(s);
                    message.destinationName = topic;
                    client.send(message);
                    document.getElementById("msg").value = "";
                }
            }
    
            var count = 0;
    
            function start() {
                window.tester = window.setInterval(function () {
                    if (client.isConnected) {
                        var s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", content:" + (count++) +
                            ", from: web console}";
                        message = new Paho.MQTT.Message(s);
                        message.destinationName = topic;
                        client.send(message);
                    }
                }, 1000);
            }
    
            function stop() {
                window.clearInterval(window.tester);
            }
    
            Date.prototype.Format = function (fmt) { //author: meizz 
                var o = {
                    "M+": this.getMonth() + 1, //月份 
                    "d+": this.getDate(), //
                    "h+": this.getHours(), //小时 
                    "m+": this.getMinutes(), //
                    "s+": this.getSeconds(), //
                    "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
                    "S": this.getMilliseconds() //毫秒 
                };
                if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
                for (var k in o)
                    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[
                        k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                return fmt;
            }
        </script>
    </head>
    
    <body>
        <input type="text" id="msg" />
        <input type="button" value="Send" onclick="send()" />
        <input type="button" value="Start" onclick="start()" />
        <input type="button" value="Stop" onclick="stop()" />
    </body>
    
    </html>
     
  • 相关阅读:
    京东商城招聘自动调价系统架构师 T4级别
    MVVM架构~Knockoutjs系列之对象与对象组合
    MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定
    MVVM架构~mvc,mvp,mvvm大话开篇
    JS~delegate与live
    DDD~我们应该知道的Model,DomainModel和ViewModel
    uva-11111 Generalized Matrioshkas
    盒子模型(非常形象)
    SQL Server提高并发查询效率
    uva-11234 Expressions
  • 原文地址:https://www.cnblogs.com/farmerkids/p/9133044.html
Copyright © 2020-2023  润新知