Создание постоянно обновляемого канала, такого как Twitter - PullRequest
0 голосов
/ 17 ноября 2009

Мне бы хотелось, чтобы в моем приложении было что-то похожее на Twitter, но не на Twitter. По сути, это место, где люди могут отправлять сообщения и не нуждаются в аккаунте. Они могут отправлять сообщения только через приложение. Я хочу, чтобы другие пользователи приложения видели отправленные сообщения почти сразу. Я считаю, что push-уведомления могут выполнять такую ​​работу, но мне нужно push-уведомление для этого? Как это делает Твиттер?

- РЕДАКТИРОВАТЬ -

После прочтения некоторых ответов мне может понадобиться push. Люди будут часто отправлять сообщения на мой сервер. Если кто-то смотрит канал, он может видеть одно новое сообщение в минуту в зависимости от используемого им запроса. Я подумываю пойти с базой данных MySQL (которая позволяет переключаться на более дешевые серверы без Windows без особых хлопот) и push-уведомлениями. Есть ли причины, по которым это не сработает для моего сценария?

Ответы [ 4 ]

3 голосов
/ 17 ноября 2009

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

Вот примерное описание одного из способов сделать это: Ваше приложение отправляет сообщение через HTTP Post на ваш сервер. Ваш сервер сохраняет сообщение в базе данных, используя уникальный идентификатор iPhone в качестве идентификатора. Ваше приложение часто подключается к серверу, запрашивая новые сообщения. Если есть какие-либо новые, сервер передает сообщение приложению, которое отображает его.

Это примерно то, что делают твиттер-приложения для iphone и Twitter.

1 голос
/ 17 ноября 2009

Ваш выбор довольно двоичный:

  1. Использовать push-уведомление
  2. Использовать опрос

с push-уведомлением:

  • Вы контролируете, когда вы связываетесь с вашими пользователями ... Тяжелая нагрузка означает, что вы можете замедлять обновления, чтобы избежать нагрузки на инфраструктуру
  • Наоборот, вам нужно подтолкнуть клиентов, которых там больше нет (и, следовательно, может потребоваться какая-то модель регистра), высокая загрузка может означать, что клиенты не получают немедленное обновление
  • Вы можете использовать такие вещи, как Amazon EC2 , чтобы дать вам больше вычислительной мощности
  • Если у вас недостаточно ресурсов, пользователи почти наверняка будут получать обновления по мере их поступления
  • Чтобы получать сообщения, пропущенные в автономном режиме, СЕРВЕР должен знать, какое сообщение было успешно получено в последний раз, сохранять старые сообщения и пересылать сразу много сообщений

Если вы решите использовать опрос:

  • У вас должен быть стабильный адрес для опроса
  • Вам нужно иметь возможность быстро проверять соединения запросов на наличие новых данных, а затем возвращать эти данные, если это необходимо.
  • Если ваше приложение становится достаточно популярным, вы можете обнаружить, что у вас недостаточно ресурсов
  • Если ваши ресурсы облагаются налогом, ваше приложение будет закрыто, а не просто замедлится
  • Вам не нужно регистрировать клиентов и следить за их включенным / отключенным состоянием
  • Распараллеливание на лету немного сложнее
  • Чтобы забрать старые сообщения, КЛИЕНТ должен знать, когда они в последний раз получили сообщение, а затем запросить сервер отправить любое сообщение с того времени

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

1 голос
/ 17 ноября 2009

Возможно, стоит взглянуть на XMPP .

Твиттер не передает события на iPhone в реальном времени. Это больше похоже на опрос различных клиентов.

Если вы действительно хотите получить мгновенный сигнал за последнюю милю, вам нужно использовать push.

0 голосов
/ 17 ноября 2009

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

Push не будет хорошим кандидатом для этого, поскольку он не сохраняет «твиты»,Это просто механизм уведомления.В App Store есть приложение для обмена текстовыми сообщениями (оно называется Ping!), Которое полностью использует push-уведомления для отправки текстовых сообщений.Кажется, это работает нормально, но если разработчики отслеживают сообщения, все это делается на их серверах.В их случае push имеет смысл, поскольку вы хотите предупредить пользователя о новом сообщении.Однако в случае клонов в Твиттере, вероятно, было бы просто раздражать пользователей, если бы они получали новое уведомление каждый раз, когда кто-то твитнул.

В конце концов, вам лучше просто реализовать его на стороне сервера, а затем разработать клиент для iPhone, который входит в систему и получает последние твиты для людей, за которыми следит пользователь.

...