Angular: RxStomp Watch, Configure, Activate Method

Nov 20 2020

En Stomp usamos estos métodos:

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

ahora mismo estoy trabajando con RxStomp y no puedo encontrar la forma correcta de usar estos métodos de "reemplazo":

initUserEvents() {

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

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

El error que recibo es: TS2345: El argumento de tipo '(res: any) => void' no se puede asignar al parámetro de tipo 'StompHeaders'. Falta la firma del índice en el tipo '(res: any) => void'.

Respuestas

JustinBertram Nov 20 2020 at 14:59

Eche un vistazo a la documentación de RxStomp. Dice:

La diferencia clave es que expone las operaciones como RxJS Observables. Por ejemplo, cuando se suscribe un extremo STOMP, devuelve un Observable que transmitirá todos los mensajes recibidos.

Con la excepción de beforeConnect, la funcionalidad relacionada con todas las devoluciones de llamada en @ stomp / stompjs Client se expone como Observables / Subjects / BehaviorSubjects.

En otras palabras, no pasa una devolución de llamada al watchmétodo. Devuelve un Observableque puede usar para obtener los mensajes.

La API de RxStomp espera que pase encabezados al watchmétodo, no una devolución de llamada. Por eso te dice específicamente:

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