Передача данных из приложения rails клиентам - PullRequest
8 голосов
/ 14 января 2012

Я работаю над приложением rails, которое в основном будет доступно через API для различных мобильных клиентов (iOS, Android и т. Д.). Приложение вовлекает пользователей, отправляющих данные на сервер (через вызовы API), но я хочу включить возможность передавать эти данные другим клиентам. Общая концепция похожа на приложение для обмена сообщениями, где я отправляю сообщение на сервер от моего клиента, а получатель отправляет сообщение с сервера.

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

Ответы [ 4 ]

4 голосов
/ 14 января 2012

Я бы посмотрел на использование веб-сокета на странице для отправки обновлений.

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

Редактировать:

Кроме того, это проект, который объединяет Faye с Rails.Это довольно новый, но может делать то, что вы хотите. Феи-Рельсы

4 голосов
/ 14 января 2012

Вы должны проверить http://www.pusher.com

Pusher - это размещенный API для быстрого, простого и безопасного добавления масштабируемой функциональности в реальном времени к веб-приложениям и мобильным приложениям.

Если вам нужно решение для самостоятельного размещения, тогда вам стоит проверить slanger gem https://github.com/stevegraham/slanger, который является реализацией сервера для клиентских библиотек-толкачей. Когда вы чувствуете, что нуждаетесь в размещенном решении, вы просто меняете URL.

Slanger - это реализация сервера Pusher с открытым исходным кодом, написанная на Ruby. Он предназначен для горизонтального масштабирования по N узлам и не зависит от того, к какому узлу Slanger подключен абонент, т.е. НЕ требуется, чтобы подписчики на один и тот же канал подключались к одному и тому же узлу Slanger. Несколько узлов Slanger могут находиться за балансировщиком нагрузки без специальной настройки. По сути, оно было разработано так, чтобы его было очень легко масштабировать.

2 голосов
/ 14 января 2012

В Ruby есть собственная библиотека обработки событий, реализованная как гем:

https://github.com/eventmachine/eventmachine

Может быть, это поможет вам

1 голос
/ 14 января 2012

Я предпочитаю event machine, чем любое другое решение.Это несколько сложнее, чем, например, но вы можете написать более сложный код, используя машину событий.

Возможно, вы захотите проверить этот скриншот peepcode на машине событий

...