Как получить всех активных пользователей на канале pubnub в unity3d? - PullRequest
2 голосов
/ 21 января 2020

Я бы хотел, чтобы все активные пользователи подписались на канал для unity3d. Есть ли способ сделать это с pubnub в unity3d?

Ответы [ 3 ]

2 голосов
/ 22 января 2020

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

    pubnub.SubscribeCallback += (sender, e) =>
    {
        SubscribeEventEventArgs mea = e as SubscribeEventEventArgs;


        if (mea.Status != null)
        {
            if (mea.Status.Category.Equals(PNStatusCategory.PNConnectedCategory))
            {
                pubnub.Publish()
                    .Channel("RoomName")
                    .Async((result, status) =>
                    {
                        if (!status.Error)
                        {
                            Debug.Log(string.Format("DateTime {0}, In Publish Example, Timetoken: {1}", DateTime.UtcNow, result.Timetoken));
                        }
                        else
                        {
                            Debug.Log(status.Error);
                            Debug.Log(status.ErrorData.Info);
                        }
                    });


            }

        if (mea.PresenceEventResult != null)
            {
            print(mea.PresenceEventResult.Occupancy);
            }

   };
    pubnub.Subscribe()
    .Channels(new List<string>(){
    "RoomName"
    })
    .WithPresence() // don't forget this  
    .Execute();
2 голосов
/ 21 января 2020

PubNub Unity SDK Presence - HereNow

Чтобы получить всех активных подписчиков на канале, просто позвоните HereNow.

pubnub.HereNow()
    .Channels(new List<string>(){
        "my_channel"
    })
    .ChannelGroups(new List<string>() {
        "my_channel_group"
    })
    .IncludeState(true)
    .IncludeUUIDs(true)
    .Async((result, status) => {
        if (status.Error) {
            Debug.Log(string.Format("HereNow Error: {0} {1} {2}", status.StatusCode, status.ErrorData, status.Category));
        } else {               
            Debug.Log(string.Format("DateTime {0}, In Example, Channels: {1} {2}", DateTime.UtcNow , result.TotalChannels, result.TotalOccupancy));
        }
        Debug.Log(status.Error);
    });

Если вы хотите узнать, есть ли подписчики которые больше не активны (в автономном режиме), вам нужно изучить новую функцию (бета-версию на данный момент) под названием Объекты , которая включает Пробелы , Пользователи и Членство .

Объекты

Учебное пособие по объектам Объекты обеспечивают простое в использовании безсерверное хранилище данных, необходимых для создания инновационных, надежных и масштабируемых приложений чата. Используйте информацию об объекте для всех ваших возможностей взаимодействия. Вы можете легко сохранять, читать, обновлять и удалять информацию о пользователях вашего приложения, общих пространствах связи и их отношениях без необходимости поддерживать базу данных. Просто создайте и go.

ПРИМЕЧАНИЕ : Объекты - это дополнительная функция, которая в настоящее время находится в выпуске BETA - вы можете использовать свою собственную систему управления пользователями и просто использовать обычную публиковать и подписываться. Если вы хотите использовать серверное хранилище PubNub, Objects предоставляет полнофункциональное решение.

0 голосов
/ 21 января 2020

У вас есть 2 варианта:

(i) Используйте функцию присутствия в PubNub, чтобы получить список пользователей, которые в данный момент подписаны на канал, путем вызова вызова HereNow API. Вам нужно будет включить присутствие в вашем наборе ключей на панели администратора PubNub.

(ii) Использование объектов PubNub для хранения списка каналов (называемых пробелами в объектах), пользователей и членства пользователей в этих каналах и обновляйте эту информацию по мере того, как пользователи присоединяются к каналам или покидают их, и всегда получают список пользователей в канале из объекта Memberships. Вам нужно будет включить объекты в вашем наборе ключей на панели администратора PubNub.

...