gpt4 book ai didi

javascript - MQTT.js - 如何处理连接错误?

转载 作者:太空狗 更新时间:2023-10-29 19:33:24 33 4
gpt4 key购买 nike

我在使用 MQTT.js 检测连接错误时遇到困难。

我正在尝试在 Angular 服务中使用它,当服务器运行时,与服务器的连接和通信似乎工作正常,但 client.on('error', ...)从不开火。

我通过将错误回调附加到 client.stream 来设法在连接时检测到错误,但是 stream 似乎是一个私有(private)属性,因为它没有暴露在官方 TypeScript 定义,所以不确定这是否真的是正确的方法。

但我仍然没有开始工作的是连接丢失时的错误,没有错误处理程序触发。相反,浏览器控制台会记录未处理的 websocket 错误。

示例代码:

import { Injectable } from '@angular/core';
import { connect, MqttClient } from 'mqtt';
import * as msgpack5 from 'msgpack5';
import { environment } from '../../environments/environment';

@Injectable()
export class MqttService {

private client: MqttClient;
private msgpack: msgpack5.MessagePack;

constructor() {
this.msgpack = msgpack5();

this.client = connect(`ws://${environment.host}:8001/mqtt`);

this.client.on('connect', () => {
console.log('connected');
this.client.subscribe('foo');
});

this.client['stream'].on('error', (error) => {
// fires when connection can't be established
// but not when an established connection is lost
console.log('stream', error);
this.client.end();
});

this.client.on('error', (error) => {
console.log('client', error); // never fires
});

this.client.on('message', (topic, payload) => {
console.log(topic, this.msgpack.decode(payload));
});
}
}

最佳答案

我有一个与 client.on('error'.. didn't trigger on WebSocket connection error 非常相似的问题,解决方案是:

client.stream.on('错误', (err) => {
console.log('错误', 错误);
客户端()
});

关于javascript - MQTT.js - 如何处理连接错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413553/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com