2016-12-02 4 views
1

내 Pubnub 채널에 성공적으로 게시하면 들어오는 메시지뿐만 아니라 메시지 기록을보고 싶습니다. 튜토리얼 다음, 나는 다음과 같은 컨트롤러 (구성 요소/채팅/chat.controller.js) 내가 메시지가 성공적으로 게시하지만 채널의 메시지를 볼 수 없습니다 볼 수있어각도 1 - es6을 사용하여 Pubnub에서 메시지 기록 및 수신 메시지를 얻는 방법

/*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 함께 있다고 생각하지만 난 PubNub 자바 스크립트 SDK의

답변

1

어떤 버전이 문제가 촬영을 모르는 너 사용하고있어? 제공 한 코드 스 니펫에서 PubNub Javascript SDK v3의 API를 사용하는 것 같습니다.

init 함수의 구문이 잘못되었습니다. 당신이 PubNub JS SDK v3을 사용하여 PubNub AngularJS와 SDK를 사용하는 경우

, 그것은해야한다 :

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

당신이 PubNub JS SDK의 V4로 PubNub AngularJS와 SDK를 사용하는 경우

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

당신은 PubNub 자바 스크립트 SDK의 V4의 API를 사용하는 방법을 업데이트해야합니다 : 그것은해야 https://www.pubnub.com/docs/angularjs/api-reference-sdk-v4

문제가 해결되면 알려주세요. 마틴