Nano Hash - криптовалюты, майнинг, программирование

Почему я получаю сообщение об ошибке машинописи при переносе функции Paho MQTT с Angular 1 на Angular 2?

Я пытаюсь сделать несколько вещей при подключении к моему брокеру MQTT, я создал провайдера mqtt в своем приложении ionic 2, angular 2, провайдер указан ниже:

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



@Component({
  selector: 'page-greywater',
  templateUrl: 'greywater.html'
})
export class MQTT_Greenchain {
  private _client: Paho.MQTT.Client;
  private options = {
    userName: 'rdjghvoh',
    password: 'w7Ex0VTqZViw',
    timeout: 30,
    useSSL:true,
    onSuccess:this.onConnected,
  };
  private topic: string;
  public displayedMessage: string;
  public mes: Paho.MQTT.Message;
  public constructor() {
    this._client = new Paho.MQTT.Client(
      "m20.cloudmqtt.com",
      Number(30775),
      "",
      "peter"
    );
    this._client.onConnectionLost = (responseObject: {errorCode: Number, errorMessage: string}) => {
      console.log('poes');
      console.log(responseObject.errorMessage);
    };

    this._client.onMessageArrived = (message: Paho.MQTT.Message) => {
      this.onMessageArr(message);
      console.log('Message arrived.');
    };
    this.topic = "haha";
    this.displayedMessage = "what I was";
  }
  connectMe() {
    console.log("MQTT OPTIONS: " + this.options);
    this._client.connect(this.options);
  }
  private onConnected(): void {
    console.log('Connected to broker.');
    this._client.subscribe(this.topic);
    this.mes = new Paho.MQTT.Message("-1"); // -1 => Notify
    this.mes.destinationName = this.topic;
    this._client.send(this.mes);
  }
  private onMessageArr(message: Paho.MQTT.Message){
    this.displayedMessage = message.payloadString;
  }
}

Я смог без проблем вызвать следующее в angular 1, и я смог заставить работать все, что связано с MQTT. Функция в angular 1 выглядит следующим образом:

function onConnect() {
  sharedUtils.hideLoading();
  console.log("onConnect, CURRENT TOPIC: " + mqttData);
  client.subscribe(mqttData.currentTopic);
}

В приведенном выше примере mqttData.currentTopic — это просто строка.

Функция принимает 1 аргумент, хотя может принимать 2 (объект опций).

В угловом 2 машинописный текст дает мне ошибку:

Supplied parameters do not match any signature of call target

Почему мне не позволяет вызывать функцию с одним аргументом, как в angular 1? Если я передам {} в качестве второго аргумента:

this._client.subscribe(this.topic, {});

Мне дают ошибку, что:

AMQJS0005E Internal error. Error Message: Cannot read property 'subscribe' of undefined, Stack trace: TypeError: Cannot read property 'subscribe' of undefined

Это ошибка, полученная в параметре объекта ответа, переданная в функцию обратного вызова onConnectionLost.

Я совершенно уверен, что мой «this._client» не является неопределенным, поскольку сообщение «Подключено к брокеру». появляется в консоли, указывая на то, что onConnected, обратный вызов свойства onSuccess метода подключения был явно вызван?

Что я здесь не понимаю?


Ответы:


1

Попробуйте это и ответьте, если он работает нормально

  this.client.subscribe(this.topic, '');
04.12.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..