【问题标题】:Paho clients disconnecting on Mosquitto BrokerPaho 客户在 Mosquitto Broker 上断开连接
【发布时间】:2019-01-24 07:05:18
【问题描述】:

我使用 Mosquitto 库创建了一个 MQTT 代理。我创建了 1 个 Angular 5 Ionic 3 移动应用程序,它充当 paho 客户端。我能够启动 mqtt 代理。当我在 Android 设备上运行移动应用程序时。它尝试连接到代理,但我收到“客户端上的套接字错误,正在断开连接”。马上。

我想知道如何解决这个问题。 我也想知道如何在 mac 上创建一个 Paho 代理

Musquitto 代理:以下步骤用于在 mac OSX 上安装和运行代理

/usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew
/install/master/install)"

  brew install mosquitto
  /usr/local/sbin/mosquitto -c 
 /usr/local/etc/mosquitto/mosquitto.conf

这是我从终端得到的响应

1548310503: mosquitto version 1.5.1 starting
1548310503: Config loaded from /usr/local/etc/mosquitto/mosquitto.conf.
1548310503: Opening ipv6 listen socket on port 1883.
1548310503: Opening ipv4 listen socket on port 1883 

现在这里是 angular 5 ionic 3 应用代码

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {Paho} from 'ng2-mqtt/mqttws31';

@Component({
 selector: 'page-home',
 templateUrl: 'home.html'
})
export class HomePage {

 client;

constructor(public navCtrl: NavController) {

// Anikets LG Phone  Client ID: 123456 aniketPhone
// Pixel  Client ID qwerty12345  pixelPhone
this.client = new Paho.MQTT.Client('192.168.225.58', 1883, 
'aniketPhone');

this.onMessage();
this.onConnectionLost();
this.client.connect({onSuccess: this.onConnected.bind(this)});

}

 onConnected() {
console.log("Connected");
this.client.subscribe("pixelPhone");
this.sendMessage('HelloWorld');
 }

sendMessage(message: string) {
let packet = new Paho.MQTT.Message(message);
packet.destinationName = "pixelPhone";
this.client.send(packet);
}

onMessage() {
this.client.onMessageArrived = (message: Paho.MQTT.Message) => {
  console.log('Message arrived : ' + message.payloadString);
  alert(message.payloadString)
};
}

onConnectionLost() {
this.client.onConnectionLost = (responseObject: Object) => {
  console.log('Connection lost : ' + JSON.stringify(responseObject));
};
}
}

【问题讨论】:

    标签: mqtt mosquitto paho


    【解决方案1】:

    Paho Javascript 客户端仅支持基于 Websockets 的 MQTT。

    Mosquitto 默认只监听原生 MQTT(端口 1883),如果你想使用 Websocket 客户端你需要添加一个额外的监听器。

    将以下内容添加到 mosquitto.conf 文件中:

    listener 8883
    protocol websockets
    

    您需要更改 Angular 代码中的端口号。

    代码中还有一个硬编码的 clientId,这将只允许一次连接 1 个客户端,因为每个客户端都需要一个唯一的 clientId。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      相关资源
      最近更新 更多