0
我正在嘗試獲取存在事件中的數據(狀態)對象,如Pubnub Documentation中所述。Pubnub:無法獲得存在事件的狀態對象
這裏是我的代碼: -
// Subscribe to messages channel
Pubnub.subscribe({
channel: $scope.channel,
triggerEvents: ['callback','presence','message'],
state: {
username : $scope.username,
membershipType : $scope.membershipType,
memberDealsIn : $scope.memberDealsIn
}
});
//Track online users
Pubnub.here_now({
channel : $scope.channel,
state: true,
callback : function(m){
$scope.$apply(function() {
$scope.onlineUsers.push(m['uuids'])
});
}
});
//User's State
Pubnub.state({
channel : $scope.channel,
state : {
username : $scope.username,
membershipType : $scope.membershipType,
memberDealsIn : $scope.memberDealsIn
},
callback : function(m){
//console.log(m)
},
error : function(m){
//console.log(m)
}
});
我從Pubnub的getPresenceEventNameFor方法調用它: -
$scope.$on(Pubnub.getPresenceEventNameFor($scope.channel), function (ngEvent, pnEvent) {
console.log("pnEvent: ", pnEvent);
}
這裏是我的輸出: -
pnEvent: Object {action: "join", uuid: "1310974", timestamp: 1467719168, occupancy: 3}
,你可以看到其他一切都很好,但我無法獲取數據。 儘管Documentation說,它應該有太多的數據,如: -
{
"action" : "join",
"timestamp" : 1345546797,
"uuid" : "175c2c67-b2a9-470d-8f4b-1db94f90e39e",
"occupancy" : 2,
"data" : {
"age" : 67,
"full" : "RobertPlant",
"country" : "UK",
"appstate" : "foreground",
"latlong" : "51.5072°N,0.1275°W"
}
}
我一直堅持這個東西有一段時間了。 :(
請告訴我,我在這裏做錯了,爲什麼沒有在狀態下的呈現事件的設置。
感謝您的幫助。
您不應該訂閱狀態,因爲它並不總是在所有情況下都會產生預期的結果。相反,最佳做法是訂閱,然後在客戶端獲得自己的加入事件時設置狀態。然後,您將以可靠,一致的方式獲得狀態更改事件。讓我知道,如果這個地址你問。如果沒有,那麼可能最好將電子郵件提交給[PubNub支持](http://pubnub.com/support)並提供詳細信息並鏈接到此主題,以便我們可以回傳最終解決方案。 –
我不明白你的意思是什麼「當客戶端得到它自己的連接事件,設置狀態」。**我設置了當this_now事件被觸發時的狀態。第一次通過here_now事件生成在線用戶列表。我也需要狀態,因爲我通過在場事件重新生成在線用戶列表。如果用戶剛上線,我應該從哪裏獲得數據(狀態)?我認爲我可以從存在事件檢測新用戶只是正確的?所以數據需要在場。 –
在支持票上提供詳細信息。當我們爲您找到一個很好的解決方案時,我們會回到這裏。 –