2012-07-04 30 views
37

Przy całym szumie wokół WebSockets, ciężko jest znaleźć dobry poradnik, jak używać ich z serwerem Apache w Google.Używanie WebSocket na serwerze Apache

Opracowujemy wtyczkę w PHP (symfony2), która będzie od czasu do czasu uruchamiać instancję czatu. I uważamy, że WebSockets jest bardziej interesujący, standardowy i szybki niż AJAX w tej kwestii. Chodzi o to, że nie mamy dużo ressources sysadmin w naszej grupie i znaleźć ciężko zebrać dobre informacje w następujących sprawach:

  • możemy uruchomić instancję websocket na tradycyjnej Apache, serwer dedykowany, a jeśli tak, czy masz dla nas przydatne linki?
  • Jeśli potrzebujemy zmodyfikować serwer, jakie narzędzia poleciłbyś, wiedząc, że nie jesteśmy zbyt kompetentni w zakresie sysadmin, więc nie możemy sobie na to pozwolić.

Dziękuję bardzo,

PS: będziemy link do swojego bloga/strony jak zrobimy techniczną/informacyjnej post na naszym Devblog o tej części naszej aplikacji.

Jeszcze raz dziękuję!

+0

Możesz też spróbować tego [ApacheWS] (http://www.apache-ws.tk) –

Odpowiedz

14

Jedna ścieżka polega na użyciu niezależnego zainstalowanego serwera gniazd internetowych.

dla PHP można spróbować: http://code.google.com/p/phpwebsocket/ lub http://github.com/Devristo/phpws/

Istnieje kilka innych projektów, które można wypróbować, jak również.

Zasadniczo musisz przesłać, rozpakować i rozpocząć proces.

Na interfejsie będziesz mieć javascript łączący się z serwerem na określonym porcie.

Większość serwerów websocket ma demo, które odtwarza echo z powrotem, niezależnie od tego, co usłyszy, więc jest to dobre miejsce na napisanie kodu testowego. Możesz nawet znaleźć podstawową implementację czatu.

Trudnym zadaniem jest monitorowanie serwera gniazd internetowych i zapewnienie płynnego i ciągłego działania.

Spróbuj przetestować na jak największej liczbie przeglądarek/urządzeń, ponieważ będzie to decydować, która wersja serwera WebSocket wybierzesz. Istnieją stare i nowe protokoły, na które trzeba uważać.

+0

Dziękuję bardzo. Czy masz jakieś narzędzie do monitorowania przez przypadek? Baw się świetnie! –

+0

Posiadamy własne, lekkie narzędzia do monitorowania. Na początek prosty skrypt cron, który sprawdza, kiedy proces nie jest uruchomiony i uruchamia go ponownie. Możesz budować od tego lub szukać gotowych aplikacji do monitorowania procesu. – zaf

+0

OK, jestem pewien, że nasz zespół programistów będzie mógł coś zrobić! Dzięki jeszcze raz! –

17

Jako że @zaf stwierdza, że ​​istnieje większe prawdopodobieństwo znalezienia samodzielnego rozwiązania PHP - nie jest to coś, co działa w Apache. Powiedział, że istnieje apache WebSocket module.

Jednak podstawowym problemem jest to, że Apache nie został zbudowany z myślą o utrzymaniu wielu trwałych połączeń. To, wraz z PHP, opiera się na założeniu, że wnioski są wysyłane, a odpowiedzi są szybko odsyła- ne. Oznacza to, że zasoby mogą być bardzo szybko wykorzystane, jeśli masz otwarte żądania, a będziesz musiał dość szybko przyjrzeć się skalowaniu poziomemu.

Osobiście myślę, że masz dwie opcje:

  1. użyć alternatywnego rozwiązania technologicznego w czasie rzeczywistym w sieci i komunikacji pomiędzy aplikacją internetową i infrastruktury internetowej w czasie rzeczywistym za pomocą kolejki lub krótkotrwałe żądań (Web Services).
  2. Wyłącz ładowanie trwałych połączeń i skalowanie infrastruktury internetowej w czasie rzeczywistym do usługi hostowanej w czasie rzeczywistym. Pracuję dla Pusher i zaliczamy się do tej kategorii.

Zarówno dla hostingu hostowanego, jak i hostowanego, możesz sprawdzić mój realtime web tech guide.

+0

Bardzo ciekawe rzeczy :) dziękuję bardzo! Kocham twojego przewodnika, chociaż nie pomaga to w rozróżnieniu między rozwiązaniami. Sprawdzimy dokumentację;) jeszcze raz dziękujemy! –

+0

Potrzebuję znaleźć czas, aby wypróbować wszystkie technologie i dostarczyć wskazówek na temat zalet/wad różnych opcji. Na razie jest to tylko lista do kliknięcia - punkt wyjścia do własnych poszukiwań. – leggetter

+0

i już jest niesamowite :) dzięki za pracę! –

7

Wprowadziłem kolejny serwer websocket: PHP Ratchet (Github).

To jest lepsza i kompletna lista klientów & kodów po stronie serwera i obsługi przeglądarki.

Proszę to sprawdzić link.

+0

Dzięki, ale dlaczego jest lepszy? – Ben

+0

Stać się podzbiorem FAST & EASY & React (http://reactphp.org). Ma dobre dokumenty i wsparcie. – ShahRokh

+2

Czy możemy rzucić okiem na jakiekolwiek testy? – Tebe

-2

Inną ścieżką jest użycie dedykowanego serwera sieci Web.

Wypróbuj Serwer Achex Websocket pod adresem www.achex.ca i sprawdź samouczki.

LUB

Jeśli naprawdę chcesz Apache, sprawdź Apache Camel. (ale musisz go skonfigurować i jest nieco bardziej skomplikowany niż serwer Achex). http://camel.apache.org/websocket.html