1、阿里云服务器上通过docker搭建 EMQX 服务

(1) 拉取镜像

docker pull emqx/emqx:latest

(2) 一键启动

docker run -d --name emqx   -p 1883:1883   -p 8083:8083   -p 18083:18083   emqx/emqx:latest

(3) 防火墙开放端口

image

 

2、本地ubuntu虚拟机上建立客户端

(1) 安装 paho-mqtt库文件

pip3 install paho-mqtt

(2) 编写客户端代码 emqx_client.py

#!/usr/bin/env python3
import paho.mqtt.client as mqtt
import time, json

# ① 服务器信息
BROKER = "106.15.227.210"   # 换成你的公网 IP/域名
PORT   =  1883
USER   = "ubuntu"       # 无认证可留空
PWD    = "123456"
CLIENT_ID = "ubuntu-vm-client-001"
PUB_TOPIC = "demo/topic"
SUB_TOPIC = "demo/topic"

# ② 回调函数
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("✅ 已连接到 EMQX  broker!")
        client.subscribe(SUB_TOPIC)          # 订阅
    else:
        print("❌ 连接失败,返回码:", rc)

def on_message(client, userdata, msg):
    payload = msg.payload.decode()
    print(f"📨 收到消息 主题:{msg.topic}  载荷:{payload}")

# ③ 创建客户端
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, CLIENT_ID)
client.on_connect = on_connect
client.on_message = on_message
if USER:                                    # 需要认证
    client.username_pw_set(USER, PWD)

# ④ 建立 TCP 连接
client.connect(BROKER, PORT, keepalive=60)
client.loop_start()                         # 后台线程处理网络

# ⑤ 每 3 秒发布一次
try:
    count = 0
    while True:
        payload = json.dumps({"count": count, "ts": time.time()})
        client.publish(PUB_TOPIC, payload, qos=1)
        print(f"📤 发布 → {payload}")
        count += 1
        time.sleep(3)
except KeyboardInterrupt:
    print("断开连接…")
finally:
    client.loop_stop()
    client.disconnect()

image

posted on 2025-12-14 12:04  轩~邈  阅读(10)  评论(0)    收藏  举报