Сервис для
сео - оптимизаторов

Найди ошибки на сайте
Ошибки мешают продвижению сайта
Исправь ошибки на сайте
Сайт без ошибок продвигать легче
Получи новых клиентов
Новые клиенты принесут больше прибыль

Руководство по потоковому контроллеру Android V4

  1. Аспекты имен для каналов и групп каналов
  2. Мультиплексирование каналов
  3. Примеры кода мультиплексирования канала
  4. Подписка, указав канал в виде массива
  5. Группы каналов
  6. Вопросы проектирования группы каналов
  7. Примеры кода группы каналов
  8. Определение группы каналов
  9. Добавление каналов в группу каналов
  10. Подписка на группу каналов
  11. Отказ от подписки на группу каналов
  12. Удаление канала из группы каналов
  13. Перечисление всех каналов в группе каналов
  14. Удаление групп каналов по имени

Когда включен через Консоль администратора PubNub функция потокового контроллера предоставляет разработчикам PubNub возможность эффективно подписываться на несколько каналов с помощью мультиплексирования каналов (MXing) и групп каналов.

Аспекты имен для каналов и групп каналов

Названия каналов и групп каналов совместимы с UTF-8. Длина имени ограничена 64, и запрещенные символы в группе каналов:

  • запятая:,
  • косая черта: /
  • обратная косая черта: \
  • период:
  • звездочки: *
  • двоеточие: :

Мультиплексирование каналов

Мультиплексирование каналов позволяет разработчикам подписаться на до 50 каналов (не входящих в группу каналов) через один сокет TCP. На мобильных устройствах легко реализовать пропускную способность сети и экономию энергии аккумулятора, полученную благодаря мультиплексированию каналов.

Примеры кода мультиплексирования канала

Приведенные ниже примеры демонстрируют, как подписаться и отписаться от нескольких каналов одним вызовом. Использование обратных вызовов даст вам возможность узнать, когда ваши операции завершатся успешно или с ошибками.

Подписка, указав канал в виде массива

pubnub.subscribe () .channels (Arrays.asList ("my_channel1", "my_channel2")) // подписаться на каналы информации .execute (); pubnub.unsubscribe () .channels (Arrays.asList ("ch1", "ch2", "ch3")) .channelGroups (Arrays.asList ("cg1", "cg2", "cg3")) .execute ();

Подстановочные знаки позволяют клиенту подписываться на несколько каналов, используя подстановочные знаки. Например, если вы подпишетесь на a. *, Вы получите все сообщения для ab, ac, ax. Часть с подстановочными символами * относится к любой части имени строки канала после точки (.).

Поддерживается 3 уровня (2 точки) подстановочных знаков, например:
а. *
аб *

pubnub.subscribe () .channels (Arrays.asList ("foo. *")) // подписаться на информацию о каналах .execute ();

Группы каналов

Группы каналов позволяют разработчикам PubNub объединять тысячи каналов в группы, которые можно идентифицировать по имени. Затем на эти группы каналов можно подписаться, получая данные из множества внутренних каналов, которые содержит группа каналов.

Вопросы проектирования группы каналов

При создании с группами каналов вы можете создавать неограниченное количество этих групп каналов с уникальным именем, в каждой из которых может быть до 2000 каналов. На один экземпляр PubNub можно подписаться до 10 групп каналов. На приведенной ниже диаграмме изображен этот шаблон проектирования и ограничения по умолчанию:

На приведенной ниже диаграмме изображен этот шаблон проектирования и ограничения по умолчанию:

Например, для приложения группового чата имя группы каналов будет описывать разговор, а имена каналов будут каналами аудитории чата.

Для пользователя rajat: семья, друзья и работа - это имена комнат чата (группы каналов), а каналы - контакты (каналы), ваш дизайн может выглядеть примерно так:

  • раджат: семья: жена
  • раджат: семья: дочь
  • раджат: семья: сын
  • раджат: друзья: панду
  • раджат: друзья: крейг
  • Раджат: друзья: Стивен
  • раджат: работа: панду
  • раджат: работа: Стивен
  • раджат: работа: сергей

Учитывая вышеприведенный шаблон семейства, друзья и работа - это 3 группы каналов, каждая из которых содержит несколько каналов в различных комбинациях, таких как жена, сын, панду, Крейг, Стивен и т. Д.

Аналогично для пользователя alex: mychats - это имя комнаты чата (группа каналов) и общие сообщения о каналах, общее присутствие клавиатуры, общие j-сообщения, общее присутствие j-клавиатуры, общее-m- сообщения и general-m-клавиатура-присутствие, ваш дизайн может выглядеть примерно так:

  • alex: mychats: общие сообщения
  • alex: mychats: общее присутствие клавиатуры
  • alex: mychats: general-j-messages
  • alex: mychats: general-j-клавиатура-присутствие
  • alex: mychats: general-m-messages
  • alex: mychats: general-m-клавиатура-присутствие

Пожалуйста, свяжитесь с [email protected] если вы чувствуете, что этот шаблон проектирования и / или ограничения по умолчанию не будут соответствовать дизайну вашего приложения.

Каждая группа каналов и связанный канал (ы) идентифицируется уникальным именем. Эти имена могут содержать до 64 символов Unicode, за исключением зарезервированных символов:,,:,. , /, *, непечатаемые управляющие символы ASCII и ноль Юникода.

Примеры кода группы каналов

Прежде чем использовать группу каналов, необходимо сначала добавить в нее канал. Каналы могут быть добавлены либо со стороны клиента (мобильный телефон, веб-страница), либо со стороны сервера (Java, Ruby, Python).

Для нашего примера, давайте создадим приложение чата вокруг групп каналов. Каждая группа каналов будет содержать тематические каналы участников группы. Следующие шаги продемонстрируют:

  1. Определение группы каналов
  2. Добавление каналов в группу каналов
  3. Подписка на группу каналов
  4. Отказ от подписки на группу каналов
  5. Получение сообщений о присутствии группы каналов
  6. Удаление каналов из группы каналов
  7. Перечисление всех каналов в группе каналов
  8. Удаление канала из группы каналов

Определение группы каналов

Мы неявно определим группу каналов под названием family.

pubnub.listChannelsForChannelGroup () .channelGroup ("family") .async (новый PNCallback <PNChannelGroupsAllChannelsResult> () {@Override public void onResponse (PNChannelGroupsAllChannelsResult result, состояние PNStatus) {})

Добавление каналов в группу каналов

Мы добавим жену канала в семейство каналов.

pubnub.addChannelsToChannelGroup () .channelGroup (channelGroup) .channels (Arrays.asList ("ouse ")) .async (новый PNCallback <PNChannelGroupsAddChannelResult> () {@Override общедоступная пустота onResponse (PNChannel }atult) PNShannelGroup ()

Продолжая создавать CG, мы добавляем дочерние и дочерние каналы в эту группу каналов.

pubnub.addChannelsToChannelGroup () .channelGroup (channelGroup) .channels (Arrays.asList ("son", "daughter")) .async (новый PNCallback <PNChannelGroupsAddChannelResult> () {@Override public void onResponseRatNatNatNatNatRatNatRatNatRatNatRNR = }});

Подписка на группу каналов

Теперь, когда мы добавили несколько каналов в нашу CG, нам нужно подписаться на нее. Когда поступает сообщение, опубликованное для любого из членов группы каналов, оно поступит через переменную m в обратном вызове сообщения. Переменная c будет содержать имя исходного канала.

pubnub.subscribe () .channelGroups (Arrays.asList (channelGroup)) // подписаться на группы каналов .withTimetoken (1337L) // необязательно, передать отметку времени .withPresence () // также подписаться на связанную информацию о присутствии .execute ();

Отказ от подписки на группу каналов

Чтобы прекратить прием сообщений в группе каналов, необходимо отписаться от группы:

pubnub.unsubscribe () .channelGroups (Arrays.asList (channelGroup)) .execute ();

Чтобы включить получение сообщений о присутствии для CG, просто вызовите метод subscribe () с помощью withPresence ():

pubnub.subscribe () .channelGroups (Arrays.asList ("cg1", "cg2")) // подписаться на группы каналов .withTimetoken (1337L) // необязательно, передать отметку времени .withPresence () // также подписаться на соответствующее присутствие информация .execute ();

Мы узнаем больше об использовании функций PubNub Presence в Присутствие руководство.

Удаление канала из группы каналов

Предположим, что наш сын больше не хочет участвовать в семейном приложении чата, потому что его раздражают комментарии его сестры. Чтобы удалить его канал из группы, мы бы просто вызвали следующий метод:

pubnub.removeChannelsFromChannelGroup () .channelGroup ("family") .channels (Arrays.asList ("son")) .async (новый PNCallback <PNChannelGroupsRemoveChannelResult> () {@Override общедоступный void onResponse {resultCube }RR). );

Если бы у него были разрешения на удаление своей сестры из группы, он, вероятно, просто сделал бы это вместо этого, но если бы PAM был реализован, мы могли бы сделать так, чтобы у него были только разрешения либо добавлять, либо удалять себя в группу, но не добавлять или удалять другие. Мы обсудим PAM более подробно в PAM, SSL и AES256 Шифрование сообщений руководство.

Перечисление всех каналов в группе каналов

Чтобы получить список всех каналов, определенных в группе каналов, вызовите следующий метод. В этом примере мы сбрасываем все каналы в rajat: family:

pubnub.listChannelsForChannelGroup () .channelGroup ("family") .async (новый PNCallback <PNChannelGroupsAllChannelsResult> () {@Override public void onResponse (PNChannelGroupsAllChannelsResult result, состояние PNStatus) {})

Удаление групп каналов по имени

Чтобы удалить группу каналов по имени, используйте следующий метод:

pubnub.deleteChannelGroup () .channelGroup ("family") .async (новый PNCallback <PNChannelGroupsDeleteGroupResult> () {@Override public void onResponse (результат PNChannelGroupsDeleteGroupResult, статус PNStatus) {}});