Проблема с настройкой сервера Pubnub Nodejs

#node.js #socket.io #webrtc #pubnub

#node.js #socket.io #webrtc #pubnub

Вопрос:

Следуя примеру из: https://www.npmjs.org/package/pubnub

Я пытаюсь настроить соединение с моего сервера nodejs на pubnub через:

 var pubnub  = require("pubnub").init({
    publish_key:    "pub key here",
    subscribe_key:  "sub key here",
    channel:        'my_channel',
    user:           'Server'
});  

pubnub.subscribe({
    channel: 'my_channel',
    callback: function(message) {
      console.log("Message received: ", message);
    }
});

pubnub.publish({ 
    channel   : 'my_channel',
    callback  : function(e) { console.log( "SUCCESS!", e ); },
    error     : function(e) { console.log( "FAILED! RETRY PUBLISH!", e ); }
});

// test msg to see if server connect to pubnub channel
function publish() {
  pubnub.publish({ 
    channel   : 'my_channel',
    message   : 'Server subscribed'
  });
}
  

Я думал, что это следует приведенному примеру, но мой сервер не будет отображаться в журнале pubnub и не получит никаких событий SocketIO от 2 одноранговых узлов, пытающихся подключиться друг к другу. Я пытаюсь использовать pubnub с SocketIO для отправки кандидатов ice для создания p2p-видео через WebRTC

Для одноранговых узлов, которые пытаются подключиться, у которых на самом деле работает соединение pubnub, настройка выглядит следующим образом:

 (function() {
  var pubnub_setup = {
    channel:       "my_channel",
    publish_key:   "pub key",
    subscribe_key: "sub key",
    user:          user
  };

  var socket = io.connect( 'http://pubsub.pubnub.com', pubnub_setup);

// various socket.on( ... )

})();
  

Ответ №1:

@jerryfox, при подписке происходит обратный вызов соединения под названием «connect». Вы должны публиковать тестовую публикацию только при этом обратном вызове «connect» … в противном случае вы можете опубликовать до фактического подключения, и вы никогда не увидите сообщение. Попробуйте это:

 pubnub.subscribe({
    channel: 'my_channel',
    callback: function(message) {
    console.log("Message received: ", message);
    },
    connect: publish
});
  

Если у вас все еще возникают проблемы, свяжитесь с нами по адресу support@pubnub.com , и мы поможем решить эту проблему за вас.

Комментарии:

1. Спасибо! Кажется, моя проблема была в чем-то совершенно другом, из-за проблем с сервером / клиентом pubnub