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) 防火墙开放端口

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()

浙公网安备 33010602011771号