Angulaire: RxStomp Watch, configurer, activer la méthode

Nov 20 2020

Dans Stomp, nous avons utilisé ces mehtods:

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

en ce moment, je travaille avec RxStomp et je n'arrive pas à trouver la bonne façon d'utiliser ces méthodes de "remplacement":

initUserEvents() {

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

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

L'erreur que j'obtiens est: TS2345: L'argument de type '(res: any) => void' n'est pas assignable au paramètre de type 'StompHeaders'. La signature d'index est manquante dans le type '(res: any) => void'.

Réponses

JustinBertram Nov 20 2020 at 14:59

Jetez un œil à la documentation RxStomp. Ça dit:

La principale différence est qu'il expose les opérations en tant qu'observables RxJS. Par exemple, lorsqu'un point de terminaison STOMP est abonné, il renvoie un Observable qui diffusera tous les messages reçus.

À l'exception de beforeConnect, les fonctionnalités liées à tous les rappels dans @ stomp / stompjs Client sont exposées en tant que Observables / Subjects / BehaviorSubjects.

En d'autres termes, vous ne transmettez pas de rappel à la watchméthode. Il renvoie un que Observablevous pouvez utiliser pour obtenir les messages.

L'API RxStomp s'attend à ce que vous transmettiez des en-têtes à la watchméthode, pas un rappel. C'est pourquoi il vous dit spécifiquement:

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