Реализация очереди в реальном времени в iOS-клиенте - PullRequest
1 голос
/ 23 марта 2012

Мне нужно реализовать очередь элементов в реальном времени в моем приложении для iOS.(позже Android тоже).

Основной вариант использования - чтобы пользователь мог видеть общую очередь в реальном времени для всех пользователей.может быть много очередей, но в настоящее время пользователь может видеть только одну очередь за раз.Если один пользователь удаляет элемент из очереди, все остальные пользователи приложения iOS, просматривающие ту же очередь, должны видеть обновления очереди в режиме реального времени.если мой сервер обнаружит, что новый элемент был добавлен в определенную очередь, он должен быть отправлен всем другим клиентам, просматривающим эту очередь в режиме реального времени.

Каков наилучший способ реализации такого механизма?в настоящее время поддерживается только iOS, но это должно быть простое решение, так что добавление другой мобильной платформы позже не будет проблемой.

Я полагаю, есть 2 основных варианта:

  1. Делать это с помощью веб-технологий (JS & Html5) (в основном, представляя UIWebView)
  2. нативным способом - с помощью Applepush-уведомление или другие постоянные параметры подключения.(push-уведомление лучше, если я хочу иметь возможность предупреждать пользователя об изменениях в очереди, даже если приложение находится в фоновом режиме или запрещено Богом)

Очевидно, что я также могу выбрать гибридное решение.

Мне знакомо следующее решение PUB-SUB:

1.Xmpp (extension to Xmpp would be more accurate)
2.MQTT
3.Pubnub - http://www.pubnub.com/ (pretty new out there)
4. I read about Linked-in Kafka, but that seems way more advance and complicated to ny current needs.

Мне любопытно услышать, может ли кто-нибудь поэкспериментировать с любым из этих или других тезисов, может порекомендовать один и сказать, еслинативный или веб является предпочтительным путем.Выбранное решение должно быть чем-то простым в использовании и быстрым в реализации, даже при небольших затратах.(серверная часть написана в основном на php, но также можно использовать node.js)

Спасибо

1 Ответ

0 голосов
/ 17 декабря 2015

Для обновления мобильных клиентов (или клиентов любого типа) о состоянии вашей очереди на стороне сервера (или любой системы данных / структуры любого типа, RDBMS, No-SQL, Files и т. Д.), Вы можете использовать PubNub .

Ваши клиенты подпишутся на канал под названием queue-status (назовите его как хотите). Всякий раз, когда очередь получает обновление от какого-либо клиента или процесса на стороне сервера, при успешной фиксации изменения вы публикуете изменение / статус на канал queue-status, и все ваши клиенты с активной подпиской получат обновления в <1/4 независимо от того, сколько клиентов или где в мире они находятся. </p>

Если клиентское приложение зарегистрировано для APNS (push-уведомлений) на этом канале, и приложение не запущено или не на переднем плане, клиентское устройство получит это push-уведомление.

Используйте PubNub PHP SDK на стороне сервера для публикации сообщений и PubNub iOS SDK для подписки на получение сообщений .

И не забудьте использовать PubNub Access Manager для блокировки доступа к вашим каналам .

...