一念花开~

导航

 

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8"/>
    <title>登录</title>
    <p>登录操作 输入为 密码</p>
    <style>
        #message {
            height: 520px;
            border-bottom: 1px solid gray;
            padding: 20px 30px;
        }

        #container {
            margin: 0 auto;
            width: 720px;
            border: 1px solid gray
        }

        input {
            width: 300px;
            height: 36px;
            border: 1px solid gray;
            background: none;
            outline: none;
        }

        input:focus {
            border-color: yellow;
        }

        button {
            height: 36px;
        }
    </style>
    <div id="container">
        <div id="message">

        </div>
        <div>
            <input type="text" id="msg" placeholder="输入内容..."/>
            <button onclick="send()">发送消息</button>
        </div>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"
            type="text/javascript"></script>

    <script>
        //一。基本参数  备用
        var payload = new Object();//传递信息的对象
        var hostname = '192.168.1.54',
            port = 8083,
            clientId = '1',//个人账号(相当qq账号)
            timeout = 10,
            keepAlive = 20,
            cleanSession = false,
            ssl = false,
            userName = 'zhangsan',
            password = '123456',
            qos = 2,
            topic = '/mo/wftdlx/login';//订阅主题   /公司/提交人/状态/20191021165410
        //{"serial":1,"companyId":1,"title":"标题","content":"内容","statusId":0,"createId":22,"createTime":"2019-10-21 16:47:05"}
        //核心:client 以 mqtt 的方式连接 emq服务器
        client = new Paho.MQTT.Client(hostname, port, clientId);
        //1.建立客户端实例
        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() {//连接服务器 并 订阅主题
            var qos = 2;//订阅等级(表现为接收离线的信息)
            console.log("onConnected");
            s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onConnected()}";
            console.log(s);
            client.subscribe(topic +"/123123123123" +"/reply", {qos: Number(qos)});
        }

        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("连接已断开");
            }
        }

        //接收信息:payloadString是发送的信息对象
        function onMessageArrived(message) {
            var payloadString = message.payloadString;
            payload = JSON.parse(payloadString); //可以将json字符串转换成json对象


            document.getElementById('message').innerHTML += "=========="+payloadString + '<br/>';
        }

        //发送信息:s是发送的信息对象
        function send() {
            var s = document.getElementById("msg").value;
            if (s) {
                var qos = 2;//发送等级
                //如果服务器接收到终端publish某主题的消息,payload为空且retain值是true,则会删除这条持久化的消息。

                //如果服务器接收到终端publish某主题的消息,payload为空且retain值是false,则不会删除这条持久化的消息。
                var retain = true;//是否b
                payload.userName ="wjf";
                payload.password = s;
                payload.securityCode = "123123123123";
                var payloadString = JSON.stringify(payload); //可以将json对象转换成json对符串

                //放入消息负载中
                message = new Paho.MQTT.Message(payloadString);
                message.destinationName = topic;
                message.qos = Number(qos);
                message.retained = retain;

                //发送消息
                client.send(message);
                document.getElementById('message').innerHTML += s + '<br/>';
            }
        }


        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>
</body>

</html>
<!--
1.qq账号注册 (增加数据库,id自增)
2.添加好友 (两个人添加订阅)
3.聊天(本页面)
4.信息提醒
官方文档: https://docs.emqx.io/tutorial/v3/zh/client_dev/javascript.html==》快速开始 ==》客户端编程初步==》javascript
百度搜索:"mqtt的html"
管理监控api:https://docs.emqx.io/broker/v3/cn/rest.html
    authorization:  UserName:be088d0c594e6  PassWord:Mjg5NTM0OTcwMTcxMTY0MjM4MzY4NzI3NjA3MjgxNTgyMDI
    一级路径:http://192.168.1.54:8080
-->


<!-- -->

  

posted on 2019-11-12 10:18  一念花开~  阅读(1979)  评论(0)    收藏  举报