mqtt 测试

mqtt 测试

docker部署开源 mqtt broker 【eclipse-mosquitto】

bash 复制代码
docker run -d \
  --name mqtt \
  -p 1883:1883 -p 9001:9001 -p 9883:9883 \
  -v ./mqtt.conf:/mosquitto/config/mosquitto.conf \
  eclipse-mosquitto

mqtt.conf 增加websocet监听

yaml 复制代码
# This is a Mosquitto configuration file that creates a listener on port 1883
# that allows unauthenticated access.
listener 1883
allow_anonymous true

listener 9883
protocol http_api
http_dir /usr/share/mosquitto/dashboard

# WebSocket 监听
listener 9001
protocol websockets

vue中使用mqtt库

  1. 安装mqtt依赖
bash 复制代码
npm install mqtt

注: vue3 bable.config.js 添加配置,否则启动报错

js 复制代码
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  // 新增plugins
  plugins: [
    '@babel/plugin-transform-private-methods'
  ]
}
  1. mqtt工具
js 复制代码
import mqtt from 'mqtt'

// 9001 是 broker开放的websocket端口
const MQTT_URL = 'ws://localhost:9001/mqtt'

let client = null

/**
 * 获取 MQTT 客户端(单例)
 */
export function getMqttClient(topic) {
  if (!client) {
    client = mqtt.connect(MQTT_URL, {
      clientId: `vue2_${Math.random().toString(16).slice(2)}`,
      clean: true,
      reconnectPeriod: 4000,
      connectTimeout: 5000
    })

    client.on('connect', () => {
      console.log('[MQTT] connected')
      
      client.subscribe(topic)
      console.log('subscribe: ', topic)
    })

    client.on('error', err => {
      console.error('[MQTT] error', err)
    })

    client.on('close', () => {
      console.log('[MQTT] disconnected')
    })
  }

  return client
}

java模拟设备上报数据

  1. 引用maven依赖
xml 复制代码
 <dependency>
     <groupId>org.eclipse.paho</groupId>
     <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
     <version>1.2.5</version>
</dependency>
  1. 上报数据
java 复制代码
public static void main(String[] args) throws MqttException, InterruptedException {
    String broker = "tcp://localhost:1883";
    String clientId = "java-device-001";
    String topic = "device/temp";

    MqttClient client = new MqttClient(broker, clientId);
    MqttConnectOptions options = new MqttConnectOptions();
    options.setCleanSession(true);

    client.connect(options);
    System.out.println("✅ Connected to MQTT Broker");

    // 模拟温度上报

    for (int i = 0; i < 50000; i++) {
        String payload = "{\"temp\": " + (20 + i) + "}";
        MqttMessage message = new MqttMessage(payload.getBytes());
        message.setQos(1);
        client.publish(topic, message);
        System.out.println("📤 Published: " + payload);
        Thread.sleep(2000);
    }

    client.disconnect();
    client.close();
    System.out.println("模拟数据上报关闭!!!");
}
相关推荐
To_OC3 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic4 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy4 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志4 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble5 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯6 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
戮漠summer7 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
名字还没想好☜7 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司7 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
江华森8 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http