2017-01-28 2 views
0

Je suis venu pour poster cette question après 2 jours de torture ne pas être en mesure de comprendre comment je peux réellement publier les messages historiques stockés sur mon compte de stockage pubnub. Pour essayer de le comprendre à la base, j'ai créé une application de chat et utilisé la fonction d'historique décrite dans le SDK, mais chaque fois que je rafraîchis la page, les messages sont perdus. J'ai essayé le remblai et les attributs de restauration dans l'abonnement avec aucune chance. Tout ce que je veux faire est de cliquer sur rafraîchir sur chrome et voir les messages toujours là.Obtenir des messages dans l'historique de discussion à afficher dans Messenger Pubnub

<div><input id=input placeholder=you-chat-here /></div> 

Chat Output 
<div id=box></div> 

<script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.4.0.min.js"></script> 

<script>(function(){ 
    var pubnub = new PubNub({ publishKey : 'demo', subscribeKey : 'demo' }); 
    function $(id) { return document.getElementById(id); } 
    var box = $('box'), input = $('input'), channel = 'chat'; 
    pubnub.addListener({ 

     message: function(obj) { 
      box.innerHTML = (''+obj.message).replace(/[<>]/g, '') + '<br>' + box.innerHTML 
     }}); 
     pubnub.history({ 
      channel: 'chat', 
      reverse: true, // Setting to true will traverse the time line in reverse starting with the oldest message first. 
      count: 100, // how many items to fetch 
      callback : function(msgs) { 
       pubnub.each(msgs[0], chat); 
      } 
     }, 
     function (status, response) { 
      // handle status, response 
      console.log("messages successfully retreived") 
     }); 

     pubnub.subscribe({channels:[channel], 
          restore: true, 
          backfill: true, 
          ssl: true}); 

     input.addEventListener('keyup', function(e) { 
      if ((e.keyCode || e.charCode) === 13) { 
       pubnub.publish({channel : channel, message : input.value,x : (input.value='')}); 
      } 
     }); 
    })(); 
</script> 

</body> 
+0

vérifier votre 'response.messages', il est de retour réellement vos messages, mais il est et de l'objet, ne sais pas pourquoi le rappel ne fonctionne pas à partir de la méthode de l'histoire, – Roljhon

Répondre

0

Je pense que votre code history est incorrect. Pas besoin de la callback car votre réponse de code sera dans l'argument function. This example is from the JavaScript SDK docs.

pubnub.history(
    { 
     channel: 'chat', 
    }, 
    function (status, response) { 
     var msgs = response.messages; 

     if (msgs != undefined && msgs.length > 0) { 
      // if msgs were retrieved, do something useful 
      console.log(msgs); 
     } 
    } 
);