1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import mqtt from "mqtt";
- import Vue from 'vue'
- var vm = new Vue();
- class mqttHandle {
- constructor(subscribe) {
- this.connect = {
- host: vm.mqttHost,
- port: vm.mqttPort,
- endpoint: "/mqtt",
- clean: true, // 保留会话
- cleanSession: true,
- connectTimeout: 7000, // 超时时间
- reconnectPeriod: 7000, // 重连时间间隔
- // 认证信息
- clientId: Number(new Date()).toString(),
- username: "emqx_t",
- password: "emqx_t",
- }
- this.subscription = {
- topic: subscribe, //需要传入数组的包含订阅的名称
- qos: 2,
- }
- this.mqttClient = null;
- }
- /**
- * 创建链接
- * @returns client
- */
- createConnect() {
- //配置链接
- const { host, port, endpoint, ...options } = this.connect;
- const connectUrl = `ws://13.229.167.76:1884/mqtt`;
- try {
- this._client = mqtt.connect(connectUrl, options);
- } catch (error) {
- console.log("mqtt.connect error", error);
- }
- this._client.on("connect", () => {
- console.log("Connection succeeded!");
- });
- this._client.on('reconnect', (error) => {
- console.log('正在重连', error)
- })
- this._client.on("error", (error) => {
- console.log("Connection failed", error);
- });
- //配置topic
- const { topic, qos } = this.subscription;
- this._client.subscribe(topic, { qos: qos }, (error, res) => {
- if (error) {
- console.log("Subscribe to topics error", error);
- return;
- }
- this.subscribeSuccess = true;
- // console.log("Subscribe to topics res", res[0].qos, res[0].topic);
- });
- this.mqttClient = this._client;
- return this.mqttClient;
- }
- }
- export default mqttHandle;
|