Angulaire: RxStomp Watch, configurer, activer la méthode
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
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 watch
mé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'.