刚开始使用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
文档,最有可能的答案就在内部,但是教程+快速入门没有提供任何线索,其余文档非常庞大。
答案 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>