从 javascript 个客户端发布事件到 pubnub 块

publishing events to pubnub blocks from javascript client

我想用一个非常人为的例子来尝试 pubnub BLOCKS。 本质上,我正在从客户端(使用 javascript sdk)发布一条简单消息,以查看我设置的 BLOCK(或我设置的 "think")是否正在监听相应的频道...人为的例子到目前为止都失败了...

步骤

  1. 在pubnub中创建一个APP来生成凭据。
  2. 在简单的 HTML 文件中包含 pubnub SDK,初始化 Pubnub,设置事件侦听器和 publish/subscribe 方法。将频道设置为 'hello-world' 2a. Published/Subscribed 使用 .
  3. 从不同的浏览器 windows 成功发送消息
  4. 转到 pubnub 调试控制台并将频道设置为 'hello-world' 以查看来自 'hello-world' 频道的消息是否会被广播,但事实并非如此。
  5. 从客户端,我控制台记录了从消息返回的对象,并且频道显示为 'hello-world'..所以这让我想知道,为什么我没有看到在 pubnub 中注册的消息在同一个 hello-world 频道中调试控制台 ?

特别是,我的问题是:如何从 pubnub CLIENT 向 pubnub BLOCK 发送消息,以及如何从 pubnub BLOCK 向 pubnub CLIENT 发送消息?或者换句话说,pub/sub 与使用 Javascript SDK 的客户端的 BLOCK ?

hello-world 示例代码的simple.js:

(function(){
  var pubnub = new PubNub({ publishKey : 'p-key', subscribeKey : 's-key' });
  function $(id) { return document.getElementById(id); }
  var box = $('box'), input = $('input'), channel = 'hello-world';
  pubnub.addListener({
      message: function(obj) {
          box.innerHTML = (''+obj.message).replace( /[<>]/g, '' ) + '<br>' + box.innerHTML
      }});
  pubnub.subscribe({channels:[channel]});
  input.addEventListener('keyup', function(e) {
      if ((e.keyCode || e.charCode) === 13) {
        pubnub.publish({channel : channel,message : input.value,x : (input.value='')});
    }
  });
})();

从 JavaScript

向 PubNub BLOCKS 发布消息和事件

我在下面创建了一个向 PubNub 发送消息的示例。 您可以在 hello-world 频道 register a BLOCK 上接收消息。

  1. Register a BLOCK on PubNub。确保start/deploy块。
  2. 更新下面示例中的 publishKeysubscribeKey
  3. 运行下面的例子。

(()=>{

    'use strict';
 
    // Initialize PubNub Socket SDK
    const pubnub = new PubNub({ 
        publishKey   : 'demo'
    ,   subscribeKey : 'demo'
    });

    // GUI Elements
    const box     = $('#messages')
    ,     input   = $('#message')
    ,     submit  = $('#submit')
    ,     channel = 'hello-world';

    // Open Socket to Channels
    pubnub.subscribe({ channels : [channel] });

    // When Messages Arrive
    pubnub.addListener({ message: obj => receive_chat(obj) });

    // When user sends chat
    submit.click( event => send_chat(input.val()) );
    input.keyup( event => {
        if ((event.keyCode || event.charCode) === 13)
            return send_chat(input.val());
    });

    // Draw Chat Messages on Screen
    function receive_chat(obj) {
        box.html((''+obj.message).replace( /[<>]/g, '' )+'<br>'+box.html());
    }

    // Send Chat Message
    function send_chat(message) {
        console.log(input.val());
        pubnub.publish({ channel : channel, message : message });
        input.val('');
        return false;
    }


})();
div, input { font-family: "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Arial,sans-serif; }
input { padding: 10px; margin: 10px;  }
input[type=submit] { width: 100px; line-height: 100px; font-size: 20px;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.4.3.min.js"></script>

<input id="message" placeholder="type your message">
<input id="submit" type="submit" value="Send">
<div id="messages"></div>