项目里有个需要及时应答的需求,普通的http接口无法满足,所以选择了mqtt来作为通信。
1.安装mqtt
npm i mqtt
2.引用mqtt import mqtt from "mqtt"
3.使用mqtt
const clientId = Math.random();
const options = {
keepalive: 60,
reconnectPeriod: 10000,
connectTimeout: 30 * 1000,
clientId,
protocolVersion: 4,
}
const wsUrl = process.env.NODE_ENV === 'development' ? url : '';
const client = mqtt.connect(wsUrl, options);
//配置好后订阅主题
client.subscribe(`你的主题`,{qos: 2},
// 订阅后可监听
client.on("message", (topic: string, message) => {
console.log(`received message: ${message} from topic: ${topic}`);
});
// 还可查看异常
client.on('error', (err) => {
console.log('Connection error: ', err)
// client.end()
})
//监听连接状态
client.on('connect', () => {
console.log('MQTT client connected');
// 执行其他操作
});
client.on('reconnect',(err)=>{
console.log('正在进行重连',err);
})
这里需注意的是clientId必须为唯一值,否则会一直出现断连重连的现象!