mini-mqtt-bus
Version:
MQTT client wrapper with event bus for WeChat Mini Programs
2 lines (1 loc) • 1.79 kB
JavaScript
(function(i,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(i=typeof globalThis<"u"?globalThis:i||self,r(i.MiniMqttBus={}))})(this,function(i){"use strict";class r{constructor(){this.events={}}on(e,o){this.events[e]||(this.events[e]=[]),this.events[e].push(o)}off(e,o){this.events[e]&&(o?this.events[e]=this.events[e].filter(c=>c!==o):delete this.events[e])}emit(e,...o){this.events[e]&&this.events[e].forEach(c=>c(...o))}}const s=new r,u=require("../mqtt/mqtt.min.js");let t=null;function l(n){t&&t.connected||(t=u.connect(n),t.on("connect",()=>{console.log("[MQTT] 已连接"),s.emit("mqtt:connected")}),t.on("message",(e,o)=>{const c=o.toString();console.log(`[MQTT] 收到消息: ${e} => ${c}`),s.emit(`mqtt:message:${e}`,c),s.emit("mqtt:message",{topic:e,payload:c})}),t.on("reconnect",()=>{console.log("[MQTT] 正在重连..."),s.emit("mqtt:reconnecting")}),t.on("close",()=>{console.warn("[MQTT] 连接关闭"),s.emit("mqtt:closed")}),t.on("error",e=>{console.error("[MQTT] 错误:",e),s.emit("mqtt:error",e)}))}function f(n){if(!t||!t.connected){console.warn("[MQTT] 客户端未连接,无法订阅");return}t.subscribe(n,{qos:0},e=>{e?console.error(`[MQTT] 订阅失败: ${n}`,e):(console.log(`[MQTT] 已订阅: ${n}`),s.emit(`mqtt:subscribed:${n}`,n))})}function m(n){!t||!t.connected||t.unsubscribe(n,e=>{e?console.error(`[MQTT] 取消订阅失败: ${n}`,e):(console.log(`[MQTT] 已取消订阅: ${n}`),s.emit("mqtt:unsubscribed",n))})}function d(n,e){!t||!t.connected||t.publish(n,e)}function T(){t&&(t.end(),t=null,s.emit("mqtt:disconnected"))}const h={init:l,subscribe:f,unsubscribe:m,publish:d,disconnect:T};i.eventBus=s,i.mqttClient=h,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});