2011-01-22 9 views
78

Rozpocząłem projekt w Rails 3 i muszę dodać powiadomienia (takie jak Facebook). Najlepszym sposobem byłoby użycie WebSocket do obsługi urządzeń pomocniczych, takich jak iPad, ale nie mogę znaleźć żadnych dobrych narzędzi do łatwego wdrożenia go w Railsach. Znalazłem Pusherappa, ale ceny są przytłaczające, a także nie sądzę, że przekazanie moich danych firmom zewnętrznym byłoby rozsądne. Tak potrzebnych rzeczy:Best Ruby on Rails Narzędzie WebSocket

  • Open Source
  • Jakiś kanały obsługują
  • pomocników Rails (i pracuje z szyną 3)

Odpowiedz

78

Jeśli szukasz prostej implementacji WebSocket, to prawdopodobnie najlepiej jest EM-WebSocket. Jeśli chcesz wspierać awarię inną niż flash (np. Stare telefony lub iPhone 3G), powinieneś wypróbować Socket.IO-rack.

W pełni funkcjonalne implementacje, takie jak Pusher (z uwierzytelnianiem i kanałami), mają dwie opcje wyboru źródła otwartego: Socky i Juggernaut.

Socky to czysty rubinowy projekt wykorzystujący EM-WebSocket (jak pchacz) i ma kilka fajnych narzędzi do Rails. Z drugiej strony Juggernaut ma więcej historii (i więcej użytkowników atm.), Ale nowa wersja została przepisana na Node.JS (klient wciąż jest oparty na ruby) i wymaga Redis. Oba powinny działać dobrze.

+4

Dla zainteresowanych Juggernaut [został już przestarzały] (http://blog.alexmaccaw.com/killing-a-brary). Autor zaleca zamiast tego użycie HTML5 [Zdarzenia po stronie serwera] (http://www.html5rocks.com/en/tutorials/eventsource/basics/) i zapewnia ładny komentarz w łączu informującym o wycofaniu. –

+2

Jako komentarz do komentarza @ Jeff, Rails 4 zapewnia wbudowaną obsługę SSE za pośrednictwem modułu ActionController :: Streaming. Dokumenty tutaj: http://api.rubyonrails.org/classes/ActionController/Streaming.html – user456584

+0

Spójrz na [Plezi] (https://github.com/boazsegev/plezi) - framework Ruby, który może działać jako samodzielna lub wewnątrz istniejącej aplikacji Rails. Zastępuje on twój serwer Rack serwerem [GRHttp] (https://github.com/boazsegev/GRHttp), dzięki czemu możesz uruchomić Plezi dla websockets lub dodatkowych tras Html, a także używać Railsów na tym samym serwerze i porcie. W ten sposób można łatwo zapisać (lub wysłać) dane ActiveRecord za pomocą websockets - To wszystko jest taki sam kod. – 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 webs Java. Wiadomo, że Jetty (baza dla Trinidad) ma najlepszą dostępną obsługę websockets. Inną opcją (która jest całkiem fajna) jest użycie serwera komunikacyjnego z opakowaniem websocket dla punktów końcowych komunikatów. Na przykład: Torquebox (dedykowany serwer aplikacji Jruby/Rails) ma wbudowaną obsługę HornetMQ, która z kolei ma support for websockets.

19

Spójrz na faye.

+4

http://railscasts.com/episodes/260-znajomość-z -faye – Kris

+3

Faye ma wyższą ocenę popularności od grudnia 2012 r., Według Ruby Toolbox - https://www.ruby-toolbox.com/categories/HTTP_Pub_Sub . –

+1

Czy fay faktycznie używa websockets i redis jak robił to juggernaut? – JohnMerlino