angular8의 ngx-mqtt를 통해 MQTT 브로커에 연결할 수 없습니다.

Biiz

내가 무엇을하든 내 각도 응용 프로그램에서 웹 소켓을 통해 mqtt 브로커에 연결할 수 없습니다 (크롬 및 파이어 폭스에서 시도). 단순화를 위해 HiveMQ 브로커를 사용 하고 있으며 /gat/38/openReservationRequests일부 데이터 주제에 대해 게시했습니다.

ngx-mqtt를 사용하여 각도로 mqtt에 연결하는 방법에 대한 매체 기사 를 따랐지만 저에게는 작동하지 않습니다.

내 앱에서 :

모듈을 설치했습니다

npm install ngx-mqtt --save

구성을 추가하고 모듈 forRoot을 내app.module.ts

...
export const MQTT_SERVICE_OPTIONS: IMqttServiceOptions = {
  connectOnCreate: true,
  hostname: 'broker.hivemq.com',
  port: 8000,
  path: '/gat/38/openReservationRequests',
  protocol: 'ws',
};

...
imports: [
    ...
    MqttModule.forRoot(MQTT_SERVICE_OPTIONS),
    ...
  ],
...

이 기능을 내부에서 실행 중 ngOnInit입니다.app.component.ts

...
import { IMqttMessage, MqttConnectionState, MqttService } from 'ngx-mqtt';
...

constructor(private mqttService: MqttService) {
    this.mqttService.state.subscribe((s: MqttConnectionState) => {
      const status = s === MqttConnectionState.CONNECTED ? 'CONNECTED' : 'DISCONNECTED';
      this.status.push(`Mqtt client connection status: ${status}`);
    });
  }

ngOnInit() {

    this.subscription = this.mqttService
                            .observe('/gat/38/openReservationRequests')
                            .subscribe((message: IMqttMessage) => {
                              this.msg = message;
                              console.log('msg: ', message);
                              console.log('Message: ' + message.payload.toString() + 'for topic: ' + message.topic);
                              console.log('subscribed to topic: ' + /gat/38/openReservationRequests);
                            });

}

하지만 항상이 오류가 발생합니다.

core.js:6014 ERROR TypeError: Cannot read property 'resubscribe' of undefined
    at MqttClient.subscribe (mqtt.min.js:1)
    at mqtt.service.js:211
    at Observable._subscribe (using.js:8)
    at Observable._trySubscribe (Observable.js:42)
    at Observable.subscribe (Observable.js:28)
    at FilterOperator.call (filter.js:13)
    at Observable.subscribe (Observable.js:23)
    at Observable.connect (ConnectableObservable.js:30)
    at RefCountOperator.call (refCount.js:17)
    at Observable.subscribe (Observable.js:23)

mqtt.min.js:1 WebSocket connection to 'ws://broker.hivemq.com:8000/gat/38/openReservationRequests' failed: Connection closed before receiving a handshake response

clientId내부를 지정하면 MQTT_SERVICE_OPTIONS여전히 동일한 오류가 발생합니다.

내가를 변경하는 경우 protocolwss나는 다른 오류가 발생합니다 :

core.js:6014 ERROR TypeError: Cannot read property 'resubscribe' of undefined
    at MqttClient.subscribe (mqtt.min.js:1)
    at mqtt.service.js:211
    at Observable._subscribe (using.js:8)
    at Observable._trySubscribe (Observable.js:42)
    at Observable.subscribe (Observable.js:28)
    at FilterOperator.call (filter.js:13)
    at Observable.subscribe (Observable.js:23)
    at Observable.connect (ConnectableObservable.js:30)
    at RefCountOperator.call (refCount.js:17)
    at Observable.subscribe (Observable.js:23)

mqtt.min.js:1 WebSocket connection to 'wss://broker.hivemq.com:8000/gat/38/openReservationRequests' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

app.component.ts ngOnInit주제를 관찰하기 전에 내 내부에서 수동으로 연결하려고하면 :

this.mqttService.connect({
  hostname: 'broker.hivemq.com',
  port: 8000,
  path: '/gat/38/openReservationRequests',
  clientId: '34er23qwrfq42w3' //those are just random digits
});

여전히 위의 오류가 발생합니다. 나에게는 개인 mqtt 브로커가 있고 주제가 로깅 된 사용자 정보에 따라 달라지기 때문에 일부 내부 구성 요소 (사용자 인증 후 액세스 가능)에 연결하는 것이 이상적입니다.

나는 cliendId 등과 함께 /없이 프로토콜의 조합을 시도했지만이 시점에서 나는 무엇이 잘못되었는지 모릅니다. 나는 이미 내 앱을 여러 번 완전히 다시 컴파일했으며 SSL 인증서가 있지만 아무것도 변경되지 않은 테스트 서버에 게시하려고 시도했습니다.

@Anant Lalchandani 덕분에 문제가 해결 되었으며 올바른 경로를 설정했습니다.

다른 문제는 '/ mytopic'과 'mytopic'이 실제로 두 가지 다른 주제이며 나도 잘못 사용하고 있다는 것입니다. 이것은 업데이트 된 내 코드입니다 : app.module.ts

export const MQTT_SERVICE_OPTIONS: IMqttServiceOptions = {
  connectOnCreate: false,
  hostname: 'broker.hivemq.com',
  port: 8000,
  path: '/mqtt'
};

appcomponent.ts (현재 ngOnInit 내부)

 this.mqttService.connect({
      hostname: 'broker.hivemq.com',
      port: 8000,
      path: '/mqtt',
      clientId: '1234e3qer23rf'
    });

 this.mqttService.onConnect
        .subscribe(
          connack=> {
            console.log('CONNECTED');
            console.log(connack);
          }
        );

this.mqttService.observe('gat/38/openReservationRequests')
        .subscribe((message: IMqttMessage) => {
          this.msg = message;
          console.log(new TextDecoder('utf-8').decode(message.payload));
        });
아난 트 랄찬 다니

문제에서 공유 한 코드 스 니펫을 확인했습니다.

app.module.ts에서 경로 값은 '/ mqtt'여야합니다. 여기에서 주제를 경로 값으로 설정했습니다. 주제는 구독 / 게시 만 가능합니다. 웹 소켓에 연결할 때 주제를 경로 값으로 사용하고 있으므로 응용 프로그램은 처음에 웹 소켓에 연결할 수 없습니다.

/ mqtt를 경로로 사용해야하는 이유는 WebSocket 프로토콜을 통해 MQTT 메시지를 보내도록 지정하기 때문입니다.

HiveMQ 자체의 문서는 예제에서 경로를 '/ mqtt'로 사용한다고 명시했습니다. 여기 에서 설명서를 확인할 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Paho의 MQTT는 연결에 연결할 수 없습니다.

분류에서Dev

ngx-mqtt는 webapp을 통해 SSL / TLS mosquitto broker에 연결합니다.

분류에서Dev

Python Docker에서 mqtt Docker로 연결할 수 없습니다.

분류에서Dev

IoT는 MQTT + TLS로 서버에 연결할 수 없습니다.

분류에서Dev

jdbc를 통해 하이브에 연결할 수 없습니다.

분류에서Dev

'localhost'(10061)의 MySQL 서버에 연결할 수 없지만 PHP를 통해 연결할 수 있습니다.

분류에서Dev

SSH를 통해 VirtualBox의 게스트 OS에 연결할 수 없습니다.

분류에서Dev

paho-mqtt 클라이언트가 동시에 여러 브로커에 연결할 수 있습니까?

분류에서Dev

Arduino ClearCore 장치를 raspberry pi에서 호스팅되는 MQTT 서버에 연결할 수 없습니다.

분류에서Dev

Android와 MQTT를 브로커에 연결하는 데 문제가 있습니다.

분류에서Dev

ODBC를 통해 SQL Server에 연결할 수 없습니다.

분류에서Dev

ssh를 통해 GitLab에 연결할 수 없습니다.

분류에서Dev

Infiniband를 통해 서버에 연결할 수 없습니다.

분류에서Dev

SSH를 통해 Raspberry Pi에 연결할 수 없습니다.

분류에서Dev

Watir를 통해 Tor-Firefox에 연결할 수 없습니다.

분류에서Dev

ssh를 통해 Snappy Ubuntu Core에 연결할 수 없습니다.

분류에서Dev

ssh를 통해 github에 연결할 수 없습니다.

분류에서Dev

WIndows 10에서 SSH를 통해 연결할 수 없습니다.

분류에서Dev

SQLApi ++를 통해 MemSQL에 연결할 수 없습니다.

분류에서Dev

ssh를 통해 mysql에 연결할 수 없습니다.

분류에서Dev

모듈을 찾을 수 없음 오류 : Angular8에서 './'를 해결할 수 없습니다.

분류에서Dev

웹 브라우저를 통해 Odoo 서버에 연결할 수 없습니다.

분류에서Dev

Paho (MQTT) 클라이언트가 연결할 수 없습니다.

분류에서Dev

MQTT를 통해 Xively 데이터 스트림의 단위를 어떻게 설정할 수 있습니까?

분류에서Dev

Node.js로 MQTT를 통해 Google Cloud IoT에 연결하는 데 문제가 있습니다.

분류에서Dev

MySQL Workbench를 통해 Ubuntu 16.04 (비밀번호가없는 루트)의 localhost에 연결할 수 없습니다.

분류에서Dev

Android 장치를 통해 로컬 서버에 연결할 수 없습니다.

분류에서Dev

WiFi를 통해 인터넷에 연결할 수 없지만 케이블로 연결할 수 있습니다.

분류에서Dev

http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

Related 관련 기사

  1. 1

    Paho의 MQTT는 연결에 연결할 수 없습니다.

  2. 2

    ngx-mqtt는 webapp을 통해 SSL / TLS mosquitto broker에 연결합니다.

  3. 3

    Python Docker에서 mqtt Docker로 연결할 수 없습니다.

  4. 4

    IoT는 MQTT + TLS로 서버에 연결할 수 없습니다.

  5. 5

    jdbc를 통해 하이브에 연결할 수 없습니다.

  6. 6

    'localhost'(10061)의 MySQL 서버에 연결할 수 없지만 PHP를 통해 연결할 수 있습니다.

  7. 7

    SSH를 통해 VirtualBox의 게스트 OS에 연결할 수 없습니다.

  8. 8

    paho-mqtt 클라이언트가 동시에 여러 브로커에 연결할 수 있습니까?

  9. 9

    Arduino ClearCore 장치를 raspberry pi에서 호스팅되는 MQTT 서버에 연결할 수 없습니다.

  10. 10

    Android와 MQTT를 브로커에 연결하는 데 문제가 있습니다.

  11. 11

    ODBC를 통해 SQL Server에 연결할 수 없습니다.

  12. 12

    ssh를 통해 GitLab에 연결할 수 없습니다.

  13. 13

    Infiniband를 통해 서버에 연결할 수 없습니다.

  14. 14

    SSH를 통해 Raspberry Pi에 연결할 수 없습니다.

  15. 15

    Watir를 통해 Tor-Firefox에 연결할 수 없습니다.

  16. 16

    ssh를 통해 Snappy Ubuntu Core에 연결할 수 없습니다.

  17. 17

    ssh를 통해 github에 연결할 수 없습니다.

  18. 18

    WIndows 10에서 SSH를 통해 연결할 수 없습니다.

  19. 19

    SQLApi ++를 통해 MemSQL에 연결할 수 없습니다.

  20. 20

    ssh를 통해 mysql에 연결할 수 없습니다.

  21. 21

    모듈을 찾을 수 없음 오류 : Angular8에서 './'를 해결할 수 없습니다.

  22. 22

    웹 브라우저를 통해 Odoo 서버에 연결할 수 없습니다.

  23. 23

    Paho (MQTT) 클라이언트가 연결할 수 없습니다.

  24. 24

    MQTT를 통해 Xively 데이터 스트림의 단위를 어떻게 설정할 수 있습니까?

  25. 25

    Node.js로 MQTT를 통해 Google Cloud IoT에 연결하는 데 문제가 있습니다.

  26. 26

    MySQL Workbench를 통해 Ubuntu 16.04 (비밀번호가없는 루트)의 localhost에 연결할 수 없습니다.

  27. 27

    Android 장치를 통해 로컬 서버에 연결할 수 없습니다.

  28. 28

    WiFi를 통해 인터넷에 연결할 수 없지만 케이블로 연결할 수 있습니다.

  29. 29

    http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

뜨겁다태그

보관