Angular: RxStomp Watch, Configure, Activate Method

Nov 20 2020

W Stomp wykorzystaliśmy te mehtody:

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);

w tej chwili pracuję z RxStomp i nie mogę znaleźć właściwego sposobu użycia tych metod „zastępczych”:

initUserEvents() {

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

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

Pojawia się błąd: TS2345: Argument typu „(res: any) => void” nie jest przypisywany do parametru typu „StompHeaders”. Brak podpisu indeksu w typie „(res: any) => void”.

Odpowiedzi

JustinBertram Nov 20 2020 at 14:59

Zapoznaj się z dokumentacją RxStomp. To mówi:

Kluczową różnicą jest to, że ujawnia operacje jako obserwowalne RxJS. Na przykład, gdy punkt końcowy STOMP jest subskrybowany, zwraca Observable, który będzie przesyłał strumieniowo wszystkie odebrane komunikaty.

Z wyjątkiem beforeConnect, funkcjonalność związana ze wszystkimi wywołaniami zwrotnymi w kliencie @ stomp / stompjs jest ujawniana jako Observables / Subjects / BehaviorSubjects.

Innymi słowy, nie przekazujesz wywołania zwrotnego do watchmetody. Zwraca to, Observablektórego możesz użyć, aby uzyskać wiadomości.

RxStomp API oczekuje, że przekażesz nagłówki do watchmetody, a nie wywołanie zwrotne. Dlatego mówi ci konkretnie:

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