首次提交
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* MQTT Broker 服务器
|
||||
* 使用 aedes 并配置协议兼容性
|
||||
*/
|
||||
|
||||
const aedes = require('aedes')({
|
||||
// 兼容所有MQTT协议版本
|
||||
protocolVersion: 4 // 支持 MQTT 5.0,向下兼容 3.1.1 和 3.1
|
||||
});
|
||||
|
||||
const net = require('net');
|
||||
|
||||
// 配置参数
|
||||
const PORT = 1883;
|
||||
const HOST = '0.0.0.0';
|
||||
|
||||
// 简化认证 - 允许所有连接(测试用)
|
||||
aedes.authenticate = (client, username, password, callback) => {
|
||||
console.log(`[认证请求] 客户端: ${client.id}, 用户名: ${username || '无'}`);
|
||||
console.log(`[协议版本] ${client.version}`);
|
||||
|
||||
// 测试阶段:允许所有连接
|
||||
callback(null, true);
|
||||
};
|
||||
|
||||
// 客户端连接事件
|
||||
aedes.on('client', (client) => {
|
||||
console.log(`[客户端连接] ${client.id} 已连接`);
|
||||
console.log(`[当前连接数] ${aedes.connectedClients}`);
|
||||
});
|
||||
|
||||
// 客户端断开事件
|
||||
aedes.on('clientDisconnect', (client) => {
|
||||
console.log(`[客户端断开] ${client.id} 已断开`);
|
||||
});
|
||||
|
||||
// 消息发布事件
|
||||
aedes.on('publish', (packet, client) => {
|
||||
if (client) {
|
||||
const payload = packet.payload.toString();
|
||||
console.log(`[消息发布] 主题: ${packet.topic}`);
|
||||
console.log(`[发布者] ${client.id}`);
|
||||
console.log(`[消息内容] ${payload}`);
|
||||
|
||||
try {
|
||||
const data = JSON.parse(payload);
|
||||
console.log(`[水质数据] 温度:${data.temp}°C, pH:${data.ph}, COD:${data.cod}`);
|
||||
} catch (e) {}
|
||||
console.log('---');
|
||||
}
|
||||
});
|
||||
|
||||
// 订阅事件
|
||||
aedes.on('subscribe', (subscriptions, client) => {
|
||||
console.log(`[订阅] 客户端 ${client.id} 订阅了:`);
|
||||
subscriptions.forEach(sub => {
|
||||
console.log(` - 主题: ${sub.topic}`);
|
||||
});
|
||||
});
|
||||
|
||||
// 创建TCP服务器
|
||||
const server = net.createServer(aedes.handle);
|
||||
|
||||
// 启动服务器
|
||||
server.listen(PORT, HOST, () => {
|
||||
console.log('========================================');
|
||||
console.log(' MQTT Broker 服务器已启动');
|
||||
console.log('========================================');
|
||||
console.log(`监听地址: mqtt://${HOST}:${PORT}`);
|
||||
console.log(`支持协议: MQTT 3.1 / 3.1.1 / 5.0`);
|
||||
console.log('----------------------------------------');
|
||||
console.log('MQTTX / HarmonyOS 连接配置:');
|
||||
console.log(' - 主机: 192.168.128.190');
|
||||
console.log(' - 端口: 1883');
|
||||
console.log(' - 用户名: admin (可选)');
|
||||
console.log(' - 密码: admin (可选)');
|
||||
console.log(' - 发布主题: sea_status');
|
||||
console.log('========================================');
|
||||
});
|
||||
|
||||
server.on('error', (err) => {
|
||||
console.error('服务器错误:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
console.log('\n正在关闭...');
|
||||
aedes.close(() => {
|
||||
server.close();
|
||||
process.exit(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user