PubNub一遍又一遍地收到一条消息

时间:2017-09-17 08:43:40

标签: pubnub

刚开始使用PubNub,似乎我甚至无法理解最简单的场景。我创建了以下测试页面:

<!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>

使用最新的Chrome打开它并点击“开始”按钮将导致无休止地一遍又一遍地收到测试消息。我的印象是,在单个客户端收到来自总线的消息后,该客户端将不会再次收到该消息。为何如此行为?我知道我可以阅读all文档,最有可能的答案就在内部,但是教程+快速入门没有提供任何线索,其余文档非常庞大。

enter image description here

2 个答案:

答案 0 :(得分:1)

您的示例代码非常适合我。发布的消息在通道“3”上接收一次。验证这一点的一种方法是同时打开PubNub控制台(https://www.pubnub.com/docs/console)。确保在控制台中输入发布和订阅密钥以及通道“3”。单击PubNub控制台中的“订阅”按钮后,每次单击测试页上的“开始”按钮时,您都会在底部的“消息”部分看到您的测试消息“foo”出现一次。

答案 1 :(得分:1)

我可以看到您使用的是最新的SDK-JS V4(完美的起点)

  • 您的代码有效!

我想指出一些不同的方法来初始化PubNub和一些功能。

(可在他们的文档中找到)

请查看附件链接以查看我的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>