Angular: RxStomp Watch, Configure, Activate Method
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
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'.