我正在尝试使用Angular 5订阅MQTT主题,我正在使用ng2-mqtt。 创建我的客户端后,我尝试连接,这是问题开始的时候。我收到此错误: AMQJS0012E forSuccess的未定义类型未定义
有谁知道我做错了什么?
import { Component, OnInit } from '@angular/core';
import {Paho} from 'ng2-mqtt/mqttws31';
@Component({
selector: 'app-chart',
templateUrl: './chart.component.html',
styleUrls: ['./chart.component.css']
})
export class ChartComponent implements OnInit {
client;
constructor(){}
ngOnInit() {
this.client = new Paho.MQTT.Client('m2m.eclipse.org', 1883,
'_32fc96dd776142e6ba1a95116d09064f');
this.client.connect({onSuccess: this.onConnected()})
}
onConnected() {
console.log("Connected");
this.client.subscribe("/cmd1234")
}
}
答案 0 :(得分:0)
您正在指定返回值undefined
this.client.connect({onSuccess: this.onConnected()})
您需要删除()
才能分配功能
this.client.connect({onSuccess: this.onConnected})
您正在使用函数中的this
引用。
onConnected() {
console.log("Connected");
this.client.subscribe("/cmd1234")
}
当您使用this
引用时,请确保使用bind以确保它仍然存在。
this.client.connect({onSuccess: this.onConnected.bind(this)})
我不会做以上任何一项。我会使用TypeScript匿名函数。
this.client.connect({onSuccess: () => this.onConnected() })
答案 1 :(得分:0)
我解决了。我刚刚更改了MQTT服务器的主机并没有通过端口,然后一切都很顺利
ngOnInit() {
this.client = new Paho.MQTT.Client('ws://iot.eclipse.org/ws','_32fc96dd776142e6ba1a95116d09064f');
this.client.connect({onSuccess:()=> this.onConnected()})
this.client.onMessageArrived = this.onMessage.bind(this);
}