2009-01-13 18 views
5

Chciałbym zaimplementować skalowalny czat w szynach przy użyciu technologii AJAX. Z badań wiem, że jedyną skalowalnością jest pchanie po stronie serwera.Przekierowania po stronie serwera

Moje dwa pytania:

1) w stosunkowo wydajnego serwera czatu, w jakim momencie ma odpytywania stają się uciążliwe? 2) Naprawdę nie chcę używać Juggernaut. Nie wiem zbyt wiele o tym, jak działa kometa. Sądzę, że zastanawiam się, czy byłoby to dla mnie strasznie trudne do zbudowania przy użyciu Javascript (aby stworzyć serwer po stronie klienta/poller) i innego języka (w celu zapewnienia efektywnego odpytywania dla klientów za firewallem i integracji z CGI). i 3) (tak, na 2), czy nawet robię to we właściwy sposób?

Najprostszą odpowiedzią, na jaką mogę liczyć, jest skwantyfikowane "tak, umieszczasz 5 linii kodu JavaScript w kliencie i 20 linii ruby ​​w skrypcie CGI, i nazywasz to dzień".

Odpowiedz

1

Gdyby to było takie proste, aby ludzie nie zbudowali te technologie. IMHO Myślę, że sondowanie zawsze będzie na to hackowskim sposobem. To Powiedział ...

Nie jestem pewien, dlaczego Juggernaut jest poza kartami Facet to praca dla zbudowania tej witryny 64Squares z nią i działa świetnie.

Wiem, że inne witryny, takie jak WeeWar, używają metody odpytywania i mają do góry lub 400 żądań Min. Więc myślę, że zajmie to trochę czasu, zanim skalowanie stanie się problemem.

Powodzenia

Cheers

+0

Hmm ... więc przeprowadzają ankietę więcej niż 4 razy na sekundę i to jest w porządku? Hmm, może powinienem o tym pomyśleć, albo przynajmniej użyć go jako kopii zapasowej dla juggernaut. Przypuszczam, że uderzenie w 95% komputerów i złapanie reszty powinno być "ok". – user54650

1

tak, można umieścić 5 linii kodu JavaScript do klienta i 20 linii rubinu do skryptu CGI, i nazywają to dzień

+0

Wiem, że w tym momencie humorystyczne odpowiedzi nie są cenione i doceniane na SO, ale nie mogłem się oprzeć. – allesklar

+0

Śmieję się z wyjątkiem tego, że modlę się o odpowiedź na to całe popołudnie. Buduję to, aby pomóc małej firmie znajomego, a ponieważ * ja * nie mogę uruchomić Flasha w jednej z moich przeglądarek, chcę uniknąć zależnej technologii, jeśli mogę. – user54650

+0

Przepraszamy. Dużym powodem, dla którego zrobiłem mądrość, jest to, że nie miałem żadnej przydatnej napiwki do przekazania. Powodzenia. – allesklar

0

COMET działa poprzez utrzymywanie połączenia z serwerem otwartym w JavaScript (istnieje wiele przykładów, w jaki sposób uzyskać te dane asynchronicznego na stronie internetowej COMET). Serwer zasadniczo zapisuje dane i wypróżnia je, można to zrobić za pomocą Mutex w ciasnej pętli. Prawdopodobnie będziesz potrzebować kolejki sortowania wiadomości.

Na dłuższą metę lepiej będzie się dowiedzieć o BOSH. To naturalny postęp od COMET.

Mimo że Juggernaut ma krzywą uczenia się (a może nie), nauka wykonywania COMET jest bardziej skomplikowana. Nawet asynchroniczne popychanie jest trudniejsze. Nie tylko to, ale musisz także zastanowić się, jak to skalować. Nigdy nie korzystałem z Juggernaut, ale jeśli chodzi o wtyczki ROR, zakładam, że to trywialne. A jeśli dowiedzą się, jak zwiększyć skalowalność, możesz uzyskać szybszą wydajność za darmo.

Polling to kolejne opcje, które powinny wypracować technicznie prostsze, jednak jestem pasjonatem nie używając odpytywanie ponieważ może zabić serwer - więc nie będę się rozpisywał o tym tutaj, bo czuję, że jest leniwy sondowania trasa.

0

Co z ogniskiem? Sprawdza serwer co 5 sekund. Działa jak marzenie.

+0

Mam nadzieję na reakcję na poziomie IRC, która będzie transmitować wiele wiadomości na sekundę, gdy się pojawią. – user54650

2

Próbuję zrobić to samo teraz. Juggernaut działa dobrze, ale nie dla Rails 3, a jeśli nie jest to wymagane, proponuję go użyć, ponieważ nie jest łatwo pogadać. Mój projekt używa Rails 3 i odpytuje serwer co 3 sekundy (Campfire ma również 3). Używam Rails Metalu, aby super szybki głosowanie.Jeśli chcesz używać Juggernaut, to świetnie, 2 linie po stronie klienta js i 1 lub 2 po stronie serwera. W przeciwnym razie idź do pracy!

Powiązane problemy