2017-09-14 7 views
1

Je suis abonne à une prise en utilisant NG2-Stomp service:NG2 désabonnement client Stomp() ne fonctionne pas

this.fooSubscription = this.stomp.subscribe('/topic/foo', (res) => { 
    console.log('do stuff with res'); 
}); 

Cela fonctionne très bien pour recevoir des données. Mais à un certain moment (quand un bouton est cliqué), je voudrais arrêter de recevoir les données. La connexion est toujours utilisée par d'autres abonnements, je voudrais donc simplement me désabonner de ces abonnements spécifiques. Je ce qui se passe lorsque le bouton est cliqué:

unsubscribeFoo() { 
    this.fooSubscription.unsubscribe(); 
} 

Cependant, je suis encore en train clairement les données provenant de cet abonnement comme il est envoyé à partir du serveur.

quand je désabonne, je vois cela dans ma console de navigateur à partir de la sortie de débogage de Stomp, qui semble prometteur:

>>> UNSUBSCRIBE 
id:sub-3 

Mais hélas, je reçois encore des données quelques instants plus tard.

+0

J'ai le même problème, avez-vous trouvé une fixation? – Mardari

+0

@Mardari Non, j'ai fini par simplement ouvrir plusieurs connexions et créer un seul abonnement sur chacune, ce qui m'a permis d'arrêter le flux de données des abonnements individuels en déconnectant la connexion spécifique. Il doit y avoir un meilleur moyen, mais je n'ai pas pu le trouver. – David

Répondre

0

Je pense que vous devez vous déconnecter Stomp en tant que tel lorsque le bouton est cliqué:

this.stomp.disconnect(); 

Ce que vous avez devrait faire le message de la console « faire des choses avec res » pour arrêter de venir à travers, mais cela ne débranchez le stomp client.

Si cela ne fonctionne pas, essayez d'aller dans tous les abonnements stompclient et désabonnement avant de débrancher stompClient

for (const sub in this.stomp.subscriptions) { 
    if (this.stomp.subscriptions.hasOwnProperty(sub)) { 
    this.stomp.unsubscribe(sub); 
    } 
} 

J'utilise directement stompJs (pas NG2-Stomp) et cela a travaillé pour moi.

+0

Malheureusement je ne peux pas me déconnecter car j'ai encore d'autres abonnements qui reçoivent activement des données, et je ne peux pas les arrêter. Tous les abonnements utilisent la même connexion. Je veux juste arrêter les données provenant d'un abonnement spécifique. – David