2017-09-17 1 views
0

Commencé juste avec PubNub, et semble que je ne parviens pas à comprendre même le scénario le plus simple possible. J'ai créé la page de test suivant:PubNub continue à recevoir un message encore et encore

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.15.1.js"></script> 
<script> 
const pubnub = new PubNub({ 
    publishKey : '<guid>', 
    subscribeKey : '<one more guid>' 
}); 
pubnub.subscribe({channels: ['3']}); 
pubnub.addListener({ 
    message: v => { 
    console.log("on message", v); 
    }, 
}); 
function onClick() { 
    pubnub.publish({channel: '3', message: 'foo'}); 
} 
</script> 
</head> 
<body> 
<button onclick="onClick()">start</button> 
</body> 
</html> 

Ouverture avec Chrome dernière et en cliquant sur le bouton « Démarrer » se traduira par un message de test reçu sans cesse plus et plus. J'étais sous l'impression qu'après que le client unique reçoive un message d'un bus, ce client ne le recevra plus. pourquoi un tel comportement? Je comprends que je peux lire all les docs et probablement la réponse est quelque part au fond de l'intérieur, mais le tutoriel + quickstart ne donne aucun indice, et le reste des docs sont assez énormes.

enter image description here

Répondre

1

Votre exemple de code fonctionne parfaitement pour moi. Le message publié est reçu une fois sur le canal "3". Une façon de valider ceci est d'avoir simultanément la console PubNub ouverte (https://www.pubnub.com/docs/console). Assurez-vous d'entrer vos clés de publication et d'abonnement dans la console, avec le canal "3". Après avoir cliqué sur le bouton "S'abonner" dans la console PubNub, vous devriez voir votre message de test "foo" apparaître une fois dans la section "messages" en bas chaque fois que vous cliquez sur le bouton "start" sur votre page de test.

+0

Je suis le même résultat que Todd - seul message. Vous utilisez MS Edge (vous ne l'avez jamais essayé) alors pouvez-vous essayer Chrome et Firebox et nous faire savoir si vous obtenez les mêmes résultats ou des résultats différents sur ceux-ci? –

+0

J'utilise le dernier Chrome. C'est affiché sur ma capture d'écran. Pourquoi Edge? @CraigConover – grigoryvp

+0

Oh, nm, j'ai vu * edge * dans votre chemin et pour une raison quelconque supposé navigateur Edge. Nous ne sommes donc pas sûrs de ce qui se passe ici. Il doit y avoir un autre acteur extérieur qui fait que cela se produise car ce n'est pas prévu et nous sommes incapables de le reproduire. Je vois que vous avez soumis au support de PN. Pouvez-vous joindre le fichier source complet dans ce billet même si vous êtes certain qu'il est à 100% le même que ci-dessus? Merci beaucoup! –

1

Je peux voir que vous utilisez le dernier SDK-JS V4 (point de départ idéal)

  • Votre code fonctionne!

Je voudrais vous signaler un peu de façon diff à init PubNub et quelques fonctionnalités.

(qui sont disponibles dans leurs docs)

S'il vous plaît consulter le lien ci-joint pour voir mon PubNub demo

<script type="text/javascript"> 
     console.log('init PubNub.');  
     pubnub = new PubNub({ 
     publishKey: 'demo', 
     subscribeKey: 'demo', 
     uuid: 'myDemo' 
     }) 

     console.log("addListener.."); 
     pubnub.addListener({ 
     status: function(statusEvent) { 
      if (statusEvent.category === "PNConnectedCategory") { 
      console.log("PNConnectedCategory.."); 
      publishSampleMessage(); 
      } 
     }, 
     message: function(message) { 
      console.log("New Message!!", message.message);   
     }, 
     presence: function(presenceEvent) { 
      //handle presence 
     } 
     }) 

     console.log("Subscribing.."); 
     pubnub.subscribe({ 
     channels: ['myDemo'] 
     }); 

     function publishSampleMessage() { 
     console.log("Since we're publishing on subscribe connectEvent, we're sure we'll receive the following publish."); 
     var publishConfig = { 
      channel: "myDemo", 
      message: "I'm here, I'm alive!!" 
     } 
     pubnub.publish(publishConfig, function(status, response) { 
      console.log(status, response); 
     }) 
     } 

    function onClick() { 
     publishSampleMessage(); 
    } 

    </script>