Flask--Javascript订阅多个主题

20 篇文章 60 订阅
5 篇文章 0 订阅

一、JavaScript基础知识:对象(object)

 在获取到MQTT服务通过websocket推送过来的message之后:

<script src="https://cdn.bootcss.com/paho-mqtt/1.0.2/mqttws31.min.js"></script>

    <script type="text/javascript">

        client = new Paho.MQTT.Client("www.liefyuan.top", Number(9001), "websockets-test");//建立客户端实例
        client.connect({onSuccess:onConnect});//连接服务器并注册连接成功处理事件
        function onConnect() {
            console.log("onConnected");
            client.subscribe("chat");//订阅主题
            console.log("subscribed");
            //发送消息
        message = new Paho.MQTT.Message("helloWS");
        message.destinationName = "chat";
        client.send(message);
        console.log("sended")

        }
        client.onConnectionLost = onConnectionLost;//注册连接断开处理事件
        client.onMessageArrived = onMessageArrived;//注册消息接收处理事件
        function onConnectionLost(responseObject) {
            if (responseObject.errorCode !== 0) {
                console.log("onConnectionLost:"+responseObject.errorMessage);
                console.log("连接已断开");
             }
        }
        function onMessageArrived(message) {
          console.log("收到消息:"+message.payloadString);
          document.getElementById("messageShow").value+=message.payloadString;
          document.getElementById("messageShow").value+="\n";
        }

        function sendMsg() {
           message = new Paho.MQTT.Message(document.getElementById("msg").value);
           message.destinationName = "chat";
           client.send(message);
           console.log("sended")
        }

    </script>

然后获取的message是个对象,所以有必要看看这个对象中到底有哪些属性:

for (i in message) {
     console.log(i);           //获得属性
     console.log(message[i]);  //获得属性值
}

于是打印出来的有:

_getPayloadString:function(){return"string"==typeof t?t:c(t,0,t.length)}

_getPayloadBytes:function(){if("string"==typeof t){var e=new ArrayBuffer(r(t)),s=new Uint8Array(e);return a(t,s,0),s}return t}

_getDestinationName:function(){return s}

_setDestinationName:function(e){if("string"!=typeof e)throw new Error(g(l.INVALID_ARGUMENT,[e,"newDestinationName"]));s=e}

_getQos:function(){return n}

_setQos:function(e){if(0!==e&&1!==e&&2!==e)throw new Error("Invalid argument:"+e);n=e}

_getRetained:function(){return i}

_setRetained:function(e){if("boolean"!=typeof e)throw new Error(g(l.INVALID_ARGUMENT,[e,"newRetained"]));i=e}

_getDuplicate:function(){return o}

_setDuplicate:function(e){o=e}

payloadString:66

payloadBytes:54,54

destinationName:wemos/chat

qos:0

retained:false

duplicate:false

二、订阅多个主题

原理:

 利用MQTT的主题匹配来实现:比如你有主题:test/mcu/1、test/mcu/2、test/mcu/3那么你在订阅主题的使用“test/mcu/+”,那么上面的主题都被订阅了。

订阅之后如何分开数据?

就如上所说的利用下面这个属性来分开数据:

destinationName:wemos/chat

message.destinationName就可以收到你想要的具体主题了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值