Winkel: RxStomp-Methode beobachten, konfigurieren, aktivieren

Nov 20 2020

In Stomp haben wir diese Methoden verwendet:

initUserEvents() {

this.stompService.startConnect().then(() => {
      this.stompService.done('init');

this.stompService.subsribe('/channel/login', res => {
      if (res.username !== this.username) {

        this.newConnectedAccounts.push(res.username);

Im Moment arbeite ich mit RxStomp und kann nicht herausfinden, wie diese "Ersatz" -Methoden richtig eingesetzt werden können:

initUserEvents() {

this.stompService.configure();
    this.stompService.activate(){

    this.stompService.watch('/channel/login', res => {
      if (res.username !== this.username) {
        this.newConnectedAccounts.push(res.username);

Der Fehler, den ich erhalte , lautet: TS2345: Argument vom Typ '(res: any) => void' kann nicht dem Parameter vom Typ 'StompHeaders' zugewiesen werden. Die Indexsignatur fehlt im Typ '(res: any) => void'.

Antworten

JustinBertram Nov 20 2020 at 14:59

Schauen Sie sich die RxStomp-Dokumentation an. Es sagt:

Der Hauptunterschied besteht darin, dass Operationen als RxJS Observables verfügbar gemacht werden. Wenn beispielsweise ein STOMP-Endpunkt abonniert ist, gibt er eine Observable zurück, die alle empfangenen Nachrichten streamen wird.

Mit Ausnahme von beforeConnect wird die Funktionalität aller Rückrufe im @ stomp / stompjs-Client als Observables / Subjects / BehaviorSubjects angezeigt .

Mit anderen Worten, Sie übergeben keinen Rückruf an die watchMethode. Es gibt eine zurück, mit der ObservableSie die Nachrichten abrufen können.

Die RxStomp-API erwartet, dass Sie Header an die watchMethode übergeben, keinen Rückruf. Deshalb sagt es Ihnen speziell:

TS2345: Argument of type '(res: any) => void' is not assignable to parameter of type 'StompHeaders'.