mqtt的使用
(1)一般放于工具类文件夹utils:
import mqtt from 'mqtt'; import { ConfigManager } from 'utils/config'; export default { connect() { var mqttServer = ConfigManager.getAppConfig('mqttServer'); var client = mqtt.connect({ protocol: window.location.protocol === 'https:' ? 'wss' : 'ws', host: mqttServer.ip, hostname: mqttServer.ip, port: mqttServer.port, path: window.location.protocol === 'https:' ? '/mqtt' : '/', connectTimeout: 60 * 1000, }); client.on('connect', function () { console.log('连接MQTT服务成功!'); }); client.on('reconnect', function () { console.log('mqtt正在尝试重新连接...'); }); client.on('offline', function () { console.log('mqtt连接出错'); client.unsubscribe('0/#'); }); client.on('close', function () { console.log('MQTT服务成功关闭!'); }); return client; }, listen(client, cb, topic = '0/#', format = true) { client.subscribe(topic, function () { console.log('mqtt预订消息成功'); }); client.on('message', function (topic, message) { try { const json = message.toString(); cb(JSON.parse(json)); } catch (e) { console.error(e); } }); }, unsubscribe(client, topic = '0/#') { client.unsubscribe('0/#', function () { console.log('mqtt取消预订'); }); }, };
(2)页面中使用(react)
import mqttUtil from 'utils/mqtt-util';
// 临时存放mqtt推送的消息
const mqttAlarmListTemp = useRef<IGlobalAlarmItem[]>([]);
useEffect(() => { const mqttClient = mqttUtil.connect(); const topic = `global_alarm/message/${userInfo!.id}`; mqttUtil.listen( mqttClient, (data: IGlobalAlarmItem) => { data.uuid = uuidv4(); mqttAlarmListTemp.current.unshift(data); run(); }, topic, ); return () => { mqttUtil.unsubscribe(mqttClient, topic); }; }, []);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南