码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mqttws.js


    mqttws.js

      • 概述
      • 具体使用
        • 引入mqttws.js
        • 客户端实例化
        • 创建连接
        • 注册连接断开处理事件
        • 收到消息回调函数
        • 订阅topic
        • 取消订阅
        • 断开连接
        • 发送消息
      • 参考文章

    https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js
    https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js

    概述

    mqttws31 是一个 MQTT(Message Queue Telemetry Transport)客户端库,可以用于在浏览器中实现与 MQTT 代理服务器的通信

    mqttws31 提供了一个基于 WebSocket 协议的 MQTT 客户端实现,可以将 MQTT 协议封装在 WebSocket 协议之上,使得客户端可以通过浏览器向 MQTT 代理服务器发送和接收消息。

    使用 mqttws31 可以很方便地在浏览器中实现 MQTT 通信,它提供了与标准 MQTT 客户端库相似的 API,包括连接到服务器、发布消息、订阅主题等功能。

    由于是用websocket,所以一定要选择服务端里对用的mqtt over websocket端口号,因为请求路径是ws或wss开头

    具体使用

    引入mqttws.js

    <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>
    
    • 1

    客户端实例化

    var hostname = 'kh.tyzfchina.com.cn',
        port = 8084,
        clientId = guid(),
    var client = new Paho.MQTT.Client(hostname, port, clientId)
    
    • 1
    • 2
    • 3
    • 4

    创建连接

    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('创建mq实例失败', e)
            s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onFailure()}"
            console.log(s)
        } //创建实例失败回调
    }
    client.connect(options)
    
    //连接服务器并注册连接成功处理事件
    function onConnect () {
            client.subscribe(topic)
            console.log('订阅topic', topic)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    注册连接断开处理事件

    //注册连接断开处理事件
    client.onConnectionLost = onConnectionLost
    
    //注册消息接收处理事件
    function onConnectionLost (responseObject) {
        console.log('连接断开了', responseObject)
        s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onConnectionLost()}"
        if (responseObject.errorCode !== 0) {
            setTimeout(function () {
                console.log("连接错误:" + responseObject.errorMessage)
                isConnetion = false
                startMqtest()
            }, 1000 * 60)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    收到消息回调函数

    // 收到消息回调函数
    client.onMessageArrived = onMessageArrived
    
    // 接收到消息
    function onMessageArrived (message) {
        s = "{time:" + new Date().Format("yyyy-MM-dd hh:mm:ss") + ", onMessageArrived()}"
        console.log("收到消息:" + message.payloadString);
        console.log("topic:" + message.destinationName);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    订阅topic

    client.subscribe(topic名称,可选参数qos、OnSuccess、onFailure、invocationContext、timeout);
    
    • 1

    取消订阅

    client.unsubscribe(topic名称, unsubscribeOptions);
    //unsubscribeOptions: 可选参数qos、OnSuccess、onFailure、invocationContext、timeout
    
    • 1
    • 2

    断开连接

    client.disconnect();
    
    • 1

    发送消息

    client.send(topic,payload,qos,retained); 
    // topic: 主题
    // payload: 内容
    // qos: 发送频率
    // retained:是否保留(选择true,其他客户端订阅时会自动获取内容)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参考文章

    https://blog.csdn.net/qq_42627162/article/details/112877805

  • 相关阅读:
    最长回文子串 动态规划
    Windows性能监视器使用说明
    Kotlin调用Java代码时引起空指针异常,要怎么避免?
    使用FFmpeg从音视频处理到流媒体技术的探索和实战应用
    java计算机毕业设计微留学学生管理系统源程序+mysql+系统+lw文档+远程调试
    用CSS实现宽度自适应100%,宽高比例为16: 9的矩形
    JVM 篇之 牛刀小试 (一)
    当后端给我返回了302状态码
    声网深度学习时序编码器的资源预测实践丨Dev for Dev 专栏
    亚马逊、Shopee、美客多店铺出单量如何提高?有何方法?
  • 原文地址:https://blog.csdn.net/qq_48192192/article/details/134537372
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号