Интеграция WebSockets с Rails с использованием Rack и Event Machine - PullRequest
8 голосов
/ 22 ноября 2010

Я создал Асинхронную версию Rails 3 , которую я хотел бы интегрировать с реализацией WebSocket.

Я использую EventMachine, Ruby 1.9, Fibers и различные библиотеки со вкусом emкак задокументировано очень хорошим Илья Григорик .

Я рассматривал em-websocket как обработчик для соединений WebSocket, но не уверен, что лучший подход для перехвата этогов приложение Rails.

В идеале это будет работать аналогично node.js с Express и Socket.io - входящие соединения должны быть обнаружены и отправлены в обработчик WebSocket или в обычный стек railsкак указано в заголовках HTTP и т. д. .

TL; DR

  • Обработчик WebSocket, который подключается к существующему приложению Rails
  • Прозрачно отправляет входящие запросы WebSocketдо конечных точек в приложении

Ответы [ 3 ]

5 голосов
/ 04 июня 2012

Я знаю, что этот вопрос старый, но, надеюсь, этот ответ может помочь тем, кто был направлен сюда из Google.

Я работаю над драгоценным камнем, который удовлетворяет двум основным критериям в исходном вопросе.Этот гем называется websocket-rails и был разработан с нуля, чтобы упростить использование WebSockets внутри приложения Rails.Это, наконец, стабильная версия, но, как мне кажется, она требует гораздо больше функциональности.

В настоящее время обработка событий является очень простой.Существует файл events.rb, в котором сопоставляются события на стороне клиента с действиями контроллера, аналогичными файлу routes.rb.Все запросы к /websocket передаются на встроенный сервер WebSocket без необходимости отдельного серверного процесса.

Более амбициозная цель проекта - в конечном итоге переместить Rails в более традиционный шаблон MVC, где события наклиентский браузерный пузырь до сервера для обработки и обновления модели автоматически инициирует события на клиенте для обновления визуализированного представления этой модели.

Любая обратная связь приветствуется.

2 голосов
/ 30 мая 2011

Выезд Тощий .

Вам нужно будет использовать Thin , но вы можете обновить HTTP-запрос в середине шага. Я использую его в приложениях Sinatra, но его так же легко использовать в Rails.

1 голос
/ 22 ноября 2010

Может быть, попробовать socky ?На данный момент это лучше, и его довольно легко интегрировать с Rails (как 2, так и 3)

...