2013-02-16 14 views
7

Rozważam implementację szachów (które potrzebuje websockets) z Railsami, a także wdrożenie produkcyjne z wykorzystaniem Nginx jako odwrotnego proxy do wielu procesów Unicorn.Szyny używające Websockets z Nginxem i Unicornem?

W myśleć o tym, jak dokonać tej pracy doprowadziły mnie mieć na następujące pytania:

O ile mi zrozumieć WebSockets są trwałe połączenie. Ponieważ wszystko przechodzi przez odwrotny serwer proxy Nginx, jak dokładnie proces roboczy Unicorn utrzyma połączenie z internetem do przeglądarki klienta? Czy Nginx będzie utrzymywał informację o tym, który proces Unicorn przetwarza każdy websocket przeglądarki i działa jako rodzaj pośrednika? Czy utrzymywanie trwałego połączenia sieciowego w procesie Unicorn blokuje cały proces roboczy?

Czy istnieje zalecany sposób implementacji szachów (przy użyciu websockets) przy użyciu Rails?

+0

nginx nie obsługuje websockets. –

+9

nginx obsługuje websockets od wersji 1.3.13 – mak

+0

Co ostatecznie zdecydowałeś się zrobić user782220? – Morgan

Odpowiedz

1

Podłączanie synchroniczne przetwarzanie przez Unicorn z asynchronicznym dostawy przy użyciu nginx będzie sugerują pewną logikę na stronie nginx, która wydaje mi się co najmniej niezręczna. Co najwyżej niemożliwe.

Istnieje klejnot Railscast o prywatnym pubie, który korzysta z cienkiego serwera WWW. Jest bardziej odpowiednia do tego zadania: jest asynchroniczna, obsługuje wiele współbieżnych żądań z opcją IO opartą na zdarzeniach. Proponuję więc wymienić Unicorn na Thin lub zainstalować Thin side-by-side.

Serwer internetowy Puma może również być opcją, jednak nie mogę podać więcej informacji na ten temat.