【发布时间】:2021-11-18 15:55:28
【问题描述】:
带有 Angular v12.1.1 的 Ionic 5
在我的 Ionic App 文件 app.module.ts 中,我有 MQTT 服务选项,就像这样。
const MQTT_SERVICE_OPTIONS: IMqttServiceOptions = {
connectOnCreate: false,
hostname: 'localhost',
port: 1884,
path: '/mqtt',
protocol: 'ws'
};
然后我在导入时使用此选项。
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,
MqttModule.forRoot(MQTT_SERVICE_OPTIONS)
],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule { }
在我的“home.page.ts”中,我使用了“ngx-mqtt”,目的是收听某个主题的消息。 代码如下。
/* eslint-disable no-underscore-dangle */
import { Component, OnDestroy, OnInit } from '@angular/core';
import { error } from 'console';
import { IMqttMessage, MQTT_SERVICE_OPTIONS, MqttService } from 'ngx-mqtt';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
subscription: Subscription;
constructor(private mqttService: MqttService) {
//mqttService.connect(MQTT_SERVICE_OPTIONS);
/* console.log('Teste 0');
this.subscribeToTopic();
console.log('Teste 4'); */
}
ngOnInit() { }
subscribeToTopic() {
console.log('Teste 2');
this.subscription = this.mqttService.observe('mqtt/demo').subscribe((message: IMqttMessage) => {
console.log('Mensagem:', message);
}, (e)=> {
console.log(e);
});
console.log('Teste 3');
}
connect() {
console.log(this.mqttService.connect(MQTT_SERVICE_OPTIONS));
}
disconnect() {
console.log(this.mqttService.disconnect());
}
unSubscribe() {
console.log(this.subscription.unsubscribe());
}
}
在我的 home.page.html 中,我有 4 个按钮来激活 home.page.ts 中的 4 个功能。
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Home
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<h2>Mqtt</h2>
<ion-button (click)="connect()">Connect</ion-button>
<ion-button (click)="disconnect()">disconnect</ion-button>
<ion-button (click)="subscribeToTopic()">Subscribe</ion-button>
<ion-button (click)="unSubscribe()">unSubscribe</ion-button>
</ion-content>
蚊子经纪人
代理是来自 Eclipse version 2.0.14 的 mosquitto。 正在运行这样的自定义配置文件。
websockets.conf 内容:
port 1883
listener 1884
protocol websockets
问题
当我使用自定义配置运行 mosquitto 代理并通过 'ionic serve' 运行 ionic 应用程序时,此消息出现在运行 mosquitto 的提示符中>。
这出现在 mosquitto 提示符上:
Sending CONNACK to client-hu1m0vg4wxe (0, 5)
Client client-hu1m0vg4wxe closed its connection.
那么,我如何保持连接以订阅主题并向其发送一些消息?
【问题讨论】:
-
您需要提供更多关于您如何使用 ngx-mqtt 插件的信息。
-
请不要发布错误消息的图像,它们很难阅读,对于需要使用屏幕阅读器的人来说是不可能的。您需要发布实际文本并使用工具栏对其进行格式化。
-
所有共享的更新都包含绝对的最低限度信息,因此很难真正提供帮助。在这一点上,我建议你删除这个问题并重新开始,包括一个正确的minimum viable testcase 版本的代码,而不仅仅是连接参数,因为我们不得不猜测到这一步,但真的不能再说什么。
-
我用附加信息编辑问题。我希望足以解决问题。
标签: angular ionic-framework mqtt ionic5