UNPKG

@yhiot/utils

Version:
154 lines (138 loc) 4.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.instance = exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _mqtt = _interopRequireDefault(require("mqtt")); var _debug2 = _interopRequireDefault(require("debug")); var debug = (0, _debug2.default)('app:mqttClient'); var DEFAULT_URL = 'mqtt://localhost'; var DEFAULT_TOPIC = 'server/#'; /** * mqtt客户端 */ var MqttClient = /*#__PURE__*/function () { function MqttClient(opts) { (0, _classCallCheck2.default)(this, MqttClient); this.opts = opts; this.eventConnect = this.eventConnect.bind(this); this.eventMessage = this.eventMessage.bind(this); this.eventReconnect = this.eventReconnect.bind(this); this.eventClose = this.eventClose.bind(this); this.eventOffline = this.eventOffline.bind(this); this.eventError = this.eventError.bind(this); this.eventEnd = this.eventEnd.bind(this); this.eventPacketsend = this.eventPacketsend.bind(this); this.eventPacketreceive = this.eventPacketreceive.bind(this); this.setOpts = this.setOpts.bind(this); this.start = this.start.bind(this); this.publishJson = this.publishJson.bind(this); this.end = this.end.bind(this); } (0, _createClass2.default)(MqttClient, [{ key: "setOpts", value: function setOpts(opts) { this.opts = opts; } }, { key: "start", value: function start() { var url = this.opts.url || DEFAULT_URL; debug('mqtt.connect to ' + url); this.client = _mqtt.default.connect(url); this.client.on('connect', this.eventConnect); this.client.on('message', this.eventMessage); this.client.on('reconnect', this.eventReconnect); this.client.on('close', this.eventClose); this.client.on('offline', this.eventOffline); this.client.on('error', this.eventError); this.client.on('end', this.eventEnd); this.client.on('packetsend', this.eventPacketsend); this.client.on('packetreceive', this.eventPacketreceive); } }, { key: "eventConnect", value: function eventConnect() { var topic = this.opts.topic || DEFAULT_TOPIC; if (topic) { this.client.subscribe(topic, function (error) { if (!error) { debug('subscribe ok! topic=' + topic); // this.client.publish('/topic/test', 'Hello mqtt') } else { debug('subscribe fail!', error); } }); } } }, { key: "eventMessage", value: function eventMessage(topic, message) { // message is Buffer var strmsg = message.toString(); // debug('eventMessage', topic, strmsg) // client.end() if (this.opts.messageCallback) { this.opts.messageCallback(topic, strmsg); } } }, { key: "eventReconnect", value: function eventReconnect() { debug('eventReconnect'); } }, { key: "eventClose", value: function eventClose() { debug('eventClose'); } }, { key: "eventOffline", value: function eventOffline() { debug('eventOffline'); } }, { key: "eventError", value: function eventError(error) { debug('eventError', error); this.client.reconnect(); } }, { key: "eventEnd", value: function eventEnd() { debug('eventEnd'); } // eslint-disable-next-line }, { key: "eventPacketsend", value: function eventPacketsend(packet) {// debug('eventPacketsend'); } // eslint-disable-next-line }, { key: "eventPacketreceive", value: function eventPacketreceive(packet) {// debug('eventPacketreceive'); } }, { key: "publishJson", value: function publishJson(topic, data) { if (!this.client) { debug('error! no mqtt client!'); return false; } this.client.publish(topic, JSON.stringify(data)); } }, { key: "end", value: function end() { if (!this.client) { debug('warning! no mqtt client!'); return false; } this.client.end(); this.client = null; } }]); return MqttClient; }(); exports.default = MqttClient; var instance = new MqttClient(); exports.instance = instance;