Angular: RxStomp Watch, Configure, Activate Method

Nov 20 2020

No Stomp, usamos estes 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);

agora estou trabalhando com RxStomp e não consigo descobrir a maneira certa de usar esses métodos de "substituição":

initUserEvents() {

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

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

O erro que estou recebendo é: TS2345: Argumento do tipo '(res: any) => void' não pode ser atribuído ao parâmetro do tipo 'StompHeaders'. A assinatura do índice está faltando no tipo '(res: qualquer) => void'.

Respostas

JustinBertram Nov 20 2020 at 14:59

Dê uma olhada na documentação do RxStomp. Diz:

A principal diferença é que ele expõe as operações como observáveis ​​RxJS. Por exemplo, quando um terminal STOMP é inscrito, ele retorna um Observable que transmitirá todas as mensagens recebidas.

Com exceção de beforeConnect, a funcionalidade relacionada a todos os retornos de chamada em @ stomp / stompjs Client é exposta como Observables / Assuntos / BehaviorSubjects.

Em outras palavras, você não passa um retorno de chamada para o watchmétodo. Ele retorna um que Observablevocê pode usar para obter as mensagens.

A API RxStomp espera que você passe cabeçalhos para o watchmétodo, não um retorno de chamada. É por isso que está dizendo especificamente:

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