Как асинхронно получать данные в приложение Rails из приложения для iPhone? - PullRequest
1 голос
/ 02 июля 2010

Большая часть проекта, над которым я сейчас работаю, связана с отправкой определенных сообщений, которые могут быть легко и желательно в формате XML, из приложения для iPhone в приложение Ruby On Rails.Веб-приложение должно будет мгновенно показывать эти сообщения, поэтому перезагрузка страницы на самом деле не вариант.

Мне не удалось найти какую-либо информацию о: создание такого рода процесса прослушивания для запроса POST, можетКто-нибудь ведет меня по правильному пути и, возможно, проливает свет на то, что я должен делать, если я что-то упускаю?

edit: Будет ли использование сокетов разумнее?Приложения будут запускаться с iPod Touch / iPad в той же сети Wi-Fi.

Спасибо!

1 Ответ

1 голос
/ 02 июля 2010

То, что вы пытаетесь достичь, выполнимо, но, безусловно, не является одной из сильных сторон Ruby on Rails.Если вам нужно обновить сообщения в браузере в режиме реального времени, вы можете использовать JSSockets .Но вам нужен серверный бэкэнд, который может работать с большим количеством постоянных соединений, таких как nodejs или если вы предпочитаете использовать ruby ​​ EventMachine .Если вы все еще хотите получать сообщений через ваше приложение rails, поток данных будет

  1. Приложение Rails получит сообщение (скажем, отправив XML на /messages)
  2. Приложение rails отправляет сообщение в очередь сообщений.Взгляните на resque
  3. Сервер Evented прослушивает очередь и отправляет сообщения в браузер

Обновление: извините, я неправильно прочитал ваш вопрос как приложение для iPhoneбудучи только отправкой части.К сожалению, вы не можете использовать JSSockets на iPhone, поскольку он поставляется с компонентом Adobe Flash для связи.Однако у вас все еще есть возможность использовать длинный опрос или реализовать сокет в Objective-C и помещать полученные объекты в ваше веб-представление с помощью [webview stringByEvaluatingJavascriptString].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...