首页 > 其他分享 >html中使用mqtt

html中使用mqtt

时间:2022-11-09 14:03:44浏览次数:78  
标签:console client topic mqtt html 使用 var js

MQTT.js 是一个开源项目,支持 nodejs 和 Browser js ,这里对比一下 nodejs 和 Browser js 的用法:
注:nodejs是运行在webserver的js,Browser js意思是运行在浏览器上的js,也就是H5用到的js
注:目前项目方已经提供 CDN,不需要自己打包 https://unpkg.com/mqtt/dist/mqtt.min.js

url:ws://xxxxx:port/mqtt

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <p>文件链接:<a href=" https://unpkg.com/mqtt/dist/mqtt.min.js"> https://unpkg.com/mqtt/dist/mqtt.min.js</a> </p>
    <p>打开控制台看打印的信息</p>

    <script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
    <script>
        function randomName(len) {
            var len = len || 23;
            var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
            var maxPos = chars.length;
            var str = '';
            for (let i = 0; i < len; i++) {
                str += chars.charAt(Math.floor(Math.random() * maxPos));
            }
            return new Date().getTime() + str;
        }
        // 请确保仅在浏览器中将此捆绑包与ws 或 wssURL 一起使用。其他 URL 类型将失败
        const connectUrl = 'ws://broker.emqx.io:8083/mqtt'
        const options = {
            connectTimeout: 4000,
            reconnectPeriod: 1000,
            clientId: 'emqx_test',
            username: 'emqx_test',
            password: 'emqx_test',
            clean: true,
        }
        options.clientId = randomName(16);

        // var client = mqtt.connect(connectUrl);//连接的时候不用 options 也可以
        var client = mqtt.connect(connectUrl, options);

        // topic 是任意字符串,如果使用常见名字如 demo,可能会收到别人测试时发送的数据
        const topic = "myTopic125";

        client.on("connect", () => {
            console.log('连接成功');
        });
        client.subscribe(topic, () => {
            console.log('订阅了主题:', { topic });
        })
        client.on('message', (topic, msg) => {
            console.log(`topic: ${topic}`);
            console.log(`message: ${msg.toString()}`);
        });
        client.on("close", () => {
            console.log('已经断开连接');
        });

        // 每隔2秒发送一次消息
        setInterval(() => {
            client.publish(topic, "" + new Date());
        }, 2000);
    </script>
</body>

</html>

运行结果:

 options.clientId = randomName(16);  是把 clientId 改为随机数,因为如果 clientId 是写死的值,mqtt 会频繁重连:  

参考文档:

[1] https://www.dazhuanlan.com/jimholms/topics/1108692

[2] https://blog.csdn.net/qq_17627195/article/details/124492512

[3] https://www.zkii.net/tech/arduino/4013.html

标签:console,client,topic,mqtt,html,使用,var,js
From: https://www.cnblogs.com/sunshine233/p/16873379.html

相关文章

  • React 中 ref 的使用
    官方文档传送门Refs&DOMuseRefuseImperativeHandle在类组件中使用ref1.React.createRefclassAppextendsReact.Component{constructor(props){......
  • vue 计算属性(computed)传参---使用内嵌方法的方式传参
    //计算容器是否配置权限showAuth(){//注意:全局变量必须在方法外面引用(变量改变之后重新触发计算事件),不然变量改变无法触发计算letauths=this.fieldAu......
  • C# TaskCompletionSource<T>使用
    什么时候使用?最典型的使用场景就是包装之前的异步方案(如Event),使方法可以通过async/await去调用。示例publicTask<Args>SomeApiWrapper(){TaskCompletionSource<......
  • OpenCV官方免费视频教程->快速入门OpenCV与AI使用 (视频 + 源码)
    课程介绍  OpenCV官方发布的免费OpenCV速成视频教程。本课程将帮助您迈出使用OpenCV学习计算机视觉和AI的第一步。您将学习并接触到各种令人兴奋的主题,例如图像和......
  • 拓端tecdat|R语言辅导使用K-Means聚类可视化WiFi访问
    R语言使用K-Means聚类可视化WiFi访问 可视化已成为数据科学在电信行业中的关键应用。具体而言,电信分析高度依赖于地理空间数据的使用。这是因为电......
  • [Kyana]Linux逻辑卷的使用
    00|前排提示小白在使用Linux虚拟机时,常在开始分配较小的硬盘空间,在后续使用中常出现硬盘空间不足的问题,轻则无法安装软件,重则无法更新。本文推荐使用逻辑卷方式安装操作系......
  • 阿里云ecs使用详解
     https://help.aliyun.com/document_detail/151694.html?spm=a2c4g.11186623.0.0.3ac1a6659YY9zX准备工作创建账号,以及完善账号信息。注册阿里云账号,并完成实......
  • C#中使用记录的枚举类
    文章为机翻原文:https://josef.codes/enumeration-class-in-c-sharp-using-records/其他参考:https://learn.microsoft.com/en-us/dotnet/architecture/microservices/micr......
  • react-native-device-info(获取设备信息)在React Native安装使用步骤
    官方参考地址:https://github.com/react-native-community/react-native-device-info1.安装//下载依赖npminstall--savereact-native-device-info||yarnadd......
  • Prometheus使用指南
    一、介绍1.基本概念prometheus是一种时间序列的数据库,适合应用于监控以及告警,但是不适合100%的准确计费,因为采集的数据不一定很准确,主要是作为监控以及收集内存、CPU、硬盘......