Najlepsze narzędzie WebSocket Ruby on Rails [zamknięte]

81

Zacząłem projekt w Rails 3 i muszę dodać powiadomienia (jak na Facebooku). Najlepszym sposobem byłoby użycie WebSocket do obsługi urządzeń takich jak iPad, ale nie mogę znaleźć żadnych dobrych narzędzi do łatwego wdrożenia go w Railsach. Znalazłem Pusherapp, ale ceny są przytłaczające, a także nie sądzę, aby podanie moich danych firmie trzeciej było mądre. Potrzebne więc rzeczy:

  • Otwarte źródło
  • Niektóre kanały obsługują
  • Pomocnicy dla Railsów (i praca z Railsami 3)
Jero Toryaki
źródło

Odpowiedzi:

80

Jeśli szukasz zwykłej implementacji WebSocket, prawdopodobnie najlepszy jest EM-WebSocket . Jeśli chcesz obsługiwać rezerwę inną niż flash (jak stare telefony lub iPhone 3G), powinieneś wypróbować Socket.IO-rack .

W przypadku w pełni funkcjonalnych implementacji, takich jak Pusher (z uwierzytelnianiem i kanałami), masz dwie opcje open source: Socky i Juggernaut .

Socky jest czysto rubinowym projektem używającym EM-WebSocket (jak pusher) i ma kilka fajnych narzędzi dla Railsów. Z drugiej strony Juggernaut ma więcej historii (i więcej użytkowników atm.), Ale nowa wersja została przepisana do Node.JS (klient nadal jest oparty na Ruby) i wymaga Redis. Oba powinny działać dobrze.

Bernarda Potockiego
źródło
4
Dla zainteresowanych Juggernaut został wycofany . Autor zaleca zamiast tego używanie HTML5 Server-Side Events i zapewnia przyjemny komentarz w linku do ogłoszenia wycofania.
Jeff Dickey,
3
W następstwie komentarza @ Jeffa, Rails 4 zapewnia wbudowane wsparcie dla SSE poprzez moduł ActionController :: Streaming. Dokumenty tutaj: api.rubyonrails.org/classes/ActionController/Streaming.html
user456584
Serwer jodowy HTTP / Websocket jest rozszerzeniem języka C do języka Ruby, które zapewnia natywną łączność z pub / sub oraz Redis. Jest używany przez framework plezi , który może być również używany jako oprogramowanie pośredniczące w Railsach.
Myst
9

Inną opcją, która może zaspokoić Twoje potrzeby, ale jest nieco bardziej ezoteryczna, jest skorzystanie z jednego z serwerów aplikacji Jruby i użycie jednej z implementacji websocketów Java. Jetty (baza dla Trynidadu ) jest znane z najlepszej dostępnej obsługi gniazd sieciowych. Inną opcją (która jest całkiem fajna) jest użycie serwera wiadomości z opakowaniami Websocket dla punktów końcowych wiadomości. Na przykład Torquebox (dedykowany serwer aplikacji Jruby / Rails) ma wbudowaną obsługę HornetMQ, która z kolei obsługuje gniazda sieciowe .

Ivar
źródło