2016-12-02 1 views
1

Когда я успешно публикую на своем канале Pubnub, я хочу видеть историю сообщений, а также входящие сообщения. после урока, я создал следующий контроллер (компонент/чат/chat.controller.js)Как получить историю сообщений и входящие сообщения от Pubnub с помощью углового 1 - es6

/*jshint esnext: true */ 
'use strict'; 

    class ChatController { 
    constructor($scope, $rootScope, Pubnub) { 
     this.cardTitle = "chat window"; 
     $scope.messages = []; 
     $scope.channel = 'Channel-jlinog5q8'; 

     $scope.messageContent = ''; 

     Pubnub.init({ 
      "publishKey": publishKey, 
      "subscribeKey": subscribeKey, 
     }); 

     // Subscribe to messages channel 
     Pubnub.subscribe({ 
      channel: $scope.channel, 
      triggerEvents: ['callback'], 
     }); 
     // $scope.messageEvents = Pubnub.getMessageEventNameFor($scope.channel) 

     Pubnub.history({ 
      channel:$scope.channel, 
      callback: function(payload){ 
       console.log(payload); 
       $scope.messages.unshift(payload.message); 
      } 
     }) 


     // Send the messages over PubNub Network 
     $scope.sendMessage = function() { 
      $scope.uuid = $rootScope.userInfo.first_name +' '+$rootScope.userInfo.last_name; 

      // Don't send an empty message 
      if (!$scope.messageContent || 
       $scope.messageContent === '') { 
       return; 
      } 
      Pubnub.publish({ 
       channel: $scope.channel, 
       message: { 
        content: $scope.messageContent, 
        sender_uuid: $scope.uuid, 
        date: new Date() 
       }, 
       callback: function(m) { 
        debugger 
       }, 
       error: function (error) { 
        debugger 
        console.log('Error:', error); 
       } 
      }); 
      // Reset the messageContent input 
      $scope.messageContent = ''; 

     } 

     // Listenning to messages sent. 
     $scope.$on(Pubnub.getMessageEventNameFor($scope.channel), function (ngEvent, envelope) { 
      $scope.$apply(function() { 
       debugger 
       // add message to the messages list 
       $scope.messages.unshift(envelope.message); 
      }); 
     }); 


    } 

    activate($rootScope, PubNub, $scope) { 
    } 
} 

ChatController.$inject = ['$scope', '$rootScope', 'Pubnub']; 

export default ChatController; 

Я могу видеть сообщения публиковать успешно, но я не могу увидеть сообщения в канале, в котором Я подписан.

компонента/чат/chat.html:

<ul class="collection"> 
    <li ng-repeat="message in messages"> 
     <!-- <img src="{{avatarUrl(message.sender_uuid)}}" alt="{{message.sender_uuid}}"> --> 
     <span class="title">{{ message.sender_uuid }}</span> 
     <p>{{ message.date | date:"MM/dd/yyyy 'at' h:mma"}}</br> {{ message.content }}</p> 
    </li> 
    </ul> 

я считаю, что вопрос с $scope.$on, но я не знаю, что снимать проблемы это

ответ

1

Какой версия PubNub Javascript SDK является вы используете? Из предоставленного фрагмента кода, похоже, вы используете API-интерфейс PubNub Javascript SDK v3.

Синтаксис функции init выглядит неправильно.

Если вы используете PubNub AngularJS SDK с v3 PubNub JS SDK, это должно быть:

Pubnub.init({ 
 
      publish_key: publishKey, 
 
      subscribe_key: subscribeKey 
 
     });

Если вы используете PubNub AngularJS SDK с v4 PubNub JS SDK , он должен быть:

Pubnub.init({ 
      publishKey: publishKey, 
      subscribeKey: subscribeKey 
     }); 

и вы должны обновить методы, чтобы использовать API в v4 PubNub Javascript SDK: https://www.pubnub.com/docs/angularjs/api-reference-sdk-v4

Позвольте мне знать, если он устраняет проблему. Martin

 Смежные вопросы

  • Нет связанных вопросов^_^