Лучший инструмент Ruby on Rails WebSocket [закрыто]

81

Я начал проект в Rails 3, и мне нужно добавить уведомления (например, Facebook). Лучшим способом было бы использовать WebSocket для поддержки устройств, таких как iPad, но я не могу найти никаких хороших инструментов, чтобы легко реализовать его в Rails. Я нашел Pusherapp, но у них непомерно высокие цены, и я не думаю, что предоставление моих данных сторонней компании было бы разумным. Итак, что нужно:

  • Открытый источник
  • Какие-то каналы поддерживают
  • Помощники для Rails (и работа с Rails 3)
Джеро Торяки
источник

Ответы:

80

Если вы ищете простую реализацию WebSocket, то, вероятно, лучше всего подойдет EM-WebSocket . Если вам нужна поддержка резервного копирования без использования флэш-памяти (например, старые телефоны или iPhone 3G), вам следует попробовать Socket.IO-rack .

Для полнофункциональных реализаций, таких как Pusher (с аутентификацией и каналами), у вас есть два варианта с открытым исходным кодом: Socky и Juggernaut .

Socky - это чисто Ruby-проект, использующий EM-WebSocket (например, pusher), и в нем есть несколько хороших инструментов для Rails. С другой стороны, у Juggernaut больше истории (и больше пользователей банкоматов), но новая версия была переписана на Node.JS (клиент по-прежнему основан на Ruby) и требует Redis. Оба должны работать нормально.

Бернард Потоцкий
источник
4
Для тех, кому интересно, Джаггернаут устарел . Автор рекомендует вместо этого использовать HTML5 Server-Side Events и дает хороший комментарий в ссылке с объявлением об устаревании.
Джефф Дики
3
Как продолжение комментария @ Jeff, Rails 4 предоставляет встроенную поддержку SSE через модуль ActionController :: Streaming. Документы здесь: api.rubyonrails.org/classes/ActionController/Streaming.html
user456584
Сервер iodine HTTP / Websocket - это расширение C для Ruby, которое обеспечивает встроенное подключение pub / sub, а также Redis. Он используется фреймворком Plezi , который также можно использовать в качестве промежуточного программного обеспечения в Rails.
Myst
9

Другой вариант, который может удовлетворить ваши потребности, но немного более эзотерический, - это использовать один из серверов приложений Jruby и использовать одну из реализаций веб-сокетов Java. Jetty (база для Тринидада ), как известно, имеет лучшую доступную поддержку веб-сокетов. Другой вариант (что довольно круто) - использовать сервер обмена сообщениями с оболочками веб-сокетов для конечных точек сообщений. Например, Torquebox (выделенный сервер приложений Jruby / Rails) имеет встроенную поддержку HornetMQ, который, в свою очередь, поддерживает веб-сокеты .

Ивар
источник