2010-11-22 12 views
8

Stworzyłem Asynchronous version of Rails 3, który chciałbym zintegrować z implementacją WebSocket.Integrowanie WebSockets z Railsami przy użyciu Rack and Event Machine

Używam EventMachine, Ruby 1.9, Fibers i różnych bibliotek o smaku em, jak udokumentowano przez nikczemnie dobre Ilya Grigorik.

Szukałem em-websocket jako programu obsługi dla połączeń WebSocket, ale nie jestem pewien najlepszego sposobu na zahaczenie tego w aplikacji Rails.

Idealnie byłoby to działa w sposób podobny do node.js z Express i Socket.io - połączenia przychodzące powinny być wykrywane i wysyłane do obsługi websocket lub regularne szyny układać jak wskazano nagłówkach HTTP & itp .

TL; DR obsługi

  • websocket który można podłączyć do istniejącej aplikacji Rails
  • przezroczysty wysłania żądania przychodzące websocket do punktów końcowych w aplikacji
+1

możesz rozważyć podzielenie pytania na serię bardziej konkretnych punktów, na które chcesz odpowiedzieć. – kanaka

Odpowiedz

1

Może spróbuj socky? Jak na razie jest to najlepsze i bardzo łatwo jest zintegrować go z Railsami (zarówno 2, jak i 3)

+0

Fajnie, będzie wyglądać –

+0

Socky jest całkiem fajny, ale nie całkiem zintegrowany ze stosem Railsów tak jak Express i Socket.io. Może być w stanie wykorzystać go jako podstawę czegoś, co jest bardziej ściśle związane z Railsami. –

2

Zapoznaj się z Skinny.

Musisz użyć Thin, ale możesz zaktualizować żądanie środkowe HTTP. Używam go w aplikacjach Sinatra, ale powinien być równie łatwy w użyciu w Railsach.

5

Wiem, że to pytanie jest stare, ale mam nadzieję, że ta odpowiedź może pomóc tym, którzy zostali skierowani tutaj z google.

Pracuję nad klejnotem, który spełnia dwa główne kryteria w pierwotnym pytaniu. Klejnot nazywa się websocket-rails i został opracowany od podstaw, aby uprościć korzystanie z WebSockets w aplikacji Rails. Jest już na stabilnym wydaniu, ale jest o wiele więcej funkcji, które moim zdaniem jest potrzebne.

Obecnie obsługa zdarzeń jest bardzo prosta. Istnieje plik events.rb, w którym odwzorowuje się zdarzenia po stronie klienta na akcje kontrolera podobne do pliku routes.rb. Wszystkie żądania do /websocket są przekazywane do wbudowanego serwera WebSocket bez potrzeby oddzielnego procesu serwera.

Bardziej ambitnym celem projektu jest przeniesienie Railsów do bardziej tradycyjnego wzorca MVC, w którym zdarzenia w przeglądarce klienta pojawiają się na serwerze w celu przetworzenia i aktualizacji modelu, automatycznie powodują zdarzenia na kliencie w celu aktualizacji renderowanego obrazu reprezentacja tego modelu.

Wszelkie opinie będą mile widziane.