Winkel: RxStomp-Methode beobachten, konfigurieren, aktivieren
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
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 watch
Methode übergeben, keinen Rückruf. Deshalb sagt es Ihnen speziell:
TS2345: Argument of type '(res: any) => void' is not assignable to parameter of type 'StompHeaders'.