这是一个基于Node.js的MQTT服务器,支持标准的MQTT协议和WebSocket连接。
- ✅ 支持MQTT 3.1.1协议
- ✅ 支持WebSocket连接(浏览器客户端)
- ✅ 主题订阅和发布
- ✅ 消息持久化存储
- ✅ 心跳检测
- ✅ 多客户端支持
cd qtserver
npm install# 方式1: 使用npm脚本
npm start
# 方式2: 直接运行
node mqtt-server.js
# 方式3: 使用批处理文件(Windows)
start.bat# MQTT端口(默认1883)
export MQTT_PORT=1883
# WebSocket端口(默认8083)
export WS_PORT=8083- MQTT端口: 1883 - 标准MQTT协议端口
- WebSocket端口: 8083 - 浏览器客户端连接端口
const mqtt = require('mqtt');
// 连接到MQTT服务器
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => {
console.log('连接成功');
// 订阅主题
client.subscribe('test/topic');
// 发布消息
client.publish('test/topic', 'Hello MQTT!');
});
client.on('message', (topic, message) => {
console.log(`收到消息: ${topic} - ${message.toString()}`);
});// 浏览器端JavaScript
const ws = new WebSocket('ws://localhost:8083');
ws.onopen = () => {
console.log('WebSocket连接成功');
// 订阅主题
ws.send(JSON.stringify({
type: 'subscribe',
topic: 'test/topic'
}));
// 发布消息
ws.send(JSON.stringify({
type: 'publish',
topic: 'test/topic',
payload: 'Hello from WebSocket!'
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'message') {
console.log(`收到消息: ${data.topic} - ${data.payload}`);
}
};{
"type": "subscribe",
"topic": "your/topic"
}{
"type": "unsubscribe",
"topic": "your/topic"
}{
"type": "publish",
"topic": "your/topic",
"payload": "your message"
}{
"type": "ping"
}服务器启动后,可以通过以下方式管理:
- Ctrl+C: 优雅关闭服务器
- SIGINT/SIGTERM: 进程信号关闭
如果端口被占用,可以修改环境变量或直接修改代码中的端口号。
确保Node.js版本 >= 12.0.0,并尝试清除缓存:
npm cache clean --forceMIT License