visitor

0xB39D......13E2
08-11
0xB39D......13E2
08-11

轻量级MQTT的使用

NanoMQ官方介绍

  • NanoMQ是一款全方位的边缘消息平台,包含面向物联网(IoT)和工业物联网(IIoT)的高速 MQTT Broker,以及面向软件定义车辆(SDV)的轻量级消息总线。
  • NanoMQ 完全支持 MQTT V3.1.1/3.1 和 MQTT V5.0

NanoMQ的docker 占8.29MB, 比其它笨重的MQ轻巧很多 。配置和使用都很简单。

  1. 以docker 的方式运行MQTT 服务 :
  2. docker run -d --name nanomq \
      -p 1883:1883 \
      -p 8083:8083 \
      -p 8883:8883 \
      emqx/nanomq:latest  

    端口用途说明:

    端口 协议 用途
    1883 MQTT 标准MQTT协议端口
    8083 WS-MQTT WebSocket MQTT端口
    8883 MQTTS TLS加密MQTT端口

    自定义配置

    docker run -d -p 1883:1883 \
    -v /path/to/nanomq.conf:/etc/nanomq.conf \
    --name nanomq emqx/nanomq:latest

    nanomq.conf:

            system.num_taskq_thread = 4  # 等于CPU核心数
            system.max_taskq_thread = 4  # 等于CPU核心数
            system.parallel = 8         # CPU核心数的两倍
            mqtt.session.msq_len = 65535  # 最大消息队列长度
            log.to = "file|console"  # 同时输出到文件和终端
            log.level = "info"       # 生产环境建议info级别
            log.rotation_size = "100MB"  # 单个日志文件大小
            log.rotation_count = 10     # 保留日志文件数量
        
  3. 前端下载MQTT的JS库
  4. npm install mqtt
  5. 前端应用(Nodejs)
  6. const mqtt = require('mqtt');

    // 创建 MQTT 客户端并连接到代理
    const client = mqtt.connect('mqtt:50satoshis.com');
    // 连接成功事件
    client.on('connect', () => {
    console.log('Connected to MQTT broker');

    // 订阅主题
    client.subscribe('test/topic', (err) => {
    if (!err) {
    console.log('Subscribed to topic: test/topic');
    } else {
    console.error('Subscription error:', err);
    }
    });

    // 发布消息
    client.publish('test/topic', 'Hello from Node.js!');
    });

    // 接收消息事件
    client.on('message', (topic, message) => {
    console.log(`订阅主题: ${topic}`);
    console.log(`消息内容: ${message.toString()}`);
    });

    // 错误处理
    client.on('error', (err) => {
    console.error('MQTT error:', err);
    });

    // 断开连接处理
    client.on('close', () => {
    console.log('Connection closed');
    });

    // 保持进程运行(无需 Worker 机制)
    console.log('MQTT subscriber running. Press Ctrl+C to exit.');