由于某种原因,Pubnub javascript没有收到回调或消息

时间:2016-01-29 03:42:13

标签: javascript pubnub subscribe

只是想了解为什么我的pubnub javascript代码没有收到来自频道的消息。我可以订阅和发布,但如果另一个浏览器发送新的发布消息,则另一个浏览器无法接收该消息。继承我的代码:

$(document).ready(function () {

  var pubnub = PUBNUB.init({
    subscribe_key: 'subscribe-key-here',
    publish_key: 'publish-key-here'
  });

  pubnub.subscribe({
    channel    : "my-channel",
    message    : function(m){ console.log(m) },
    callback   : function (message) { console.log("callback: ", message)},
    connect    : function() {

      console.log("Connected")
      pubnub.publish({
        channel: 'my_channel',
        message: { "color" : "blue" },
        callback : function(details) {
            console.log(details)
        }
      });
     },
     disconnect : function() { console.log("Disconnected") },
     reconnect  : function() { console.log("Reconnected") },
     error      : function() { console.log("Network Error") },
     restore    : true
  })
});

这个代码在我的nodejs localhost服务器以及chrome和firefox浏览器上运行/测试的方式。

1 个答案:

答案 0 :(得分:3)

Code Bug - 您的频道名称中有拼写错误:

  • subscribe使用my_channel
  • publish使用my-channel

此外,您在subscribe中使用的两个参数含义相同:messagecallback的别名

对于您的publishsuccesscallback的别名(JavaScript/Node v3.7.20+),建议(仅因为它更有意义)。

我已从callback中删除了subscribe参数,并在下面的代码中将callback替换为success

更正后的代码:

$(document).ready(function () {

  var pubnub = PUBNUB.init({
    subscribe_key: 'subscribe-key-here',
    publish_key: 'publish-key-here'
  });

  pubnub.subscribe({
    channel    : "my_channel",
    message    : function (message) { console.log("callback: ", message)},
    connect    : function() {

      console.log("Connected")
      pubnub.publish({
        channel: 'my_channel',
        message: { "color" : "blue" },
        success : function(details) {
            console.log(details)
        }
      });
     },
     disconnect : function() { console.log("Disconnected") },
     reconnect  : function() { console.log("Reconnected") },
     error      : function() { console.log("Network Error") },
     restore    : true
  })
});