Nie da się stworzyć optymalnej wersji w PHP.
Mając czat w php i dużo użytkowników jesteś zmuszony na odpytywanie serwera co chwila, a to tworzy lagi i wiele innych problemów.
Lepiej byłoby otworzyć stałe połączenie, ale na każdym hostingu masz duże limity dotyczące ilości instancji interpretera php - zazwyczaj ok 4-8 intrepreterów na raz. Czyli 4-8 użytkowników wejdzie na czat i już nikt żadnej podstrony nie otworzy, ani do czatu nie dołączy.
W związku z tym, w przypadku PHP jedyna opcja to odpytywanie serwera co chwila, ale jest to nieoptymalne rozwiązanie.
Ratchet requires React, Guzzle, and Symfony2's HttpFoundation in order to work.
- Ratchet robi z php aplikację działającą w tle i nasłuchującą nowych połączeń na określonym porcie - generalnie to samo co node, tylko inny język i trochę trudniej zacząć. Tak samo jak node - wymaga doinstalowania czegoś na serwerze oraz uruchamiania własnych poleceń. Node jest tu prostsze i naturalniejsze. Ani jednego ani drugiego nie odpalisz na normalnym, współdzielonym hostingu. -
dzek69
2015-01-06 12:41
Kiedyś się pytałem w jednym wątku tutaj odnośnie mojego pomysłu na stronę, którą tworzę gdzie mają być jako jeden z modułów chaty pomiędzy userami i się pytałem czy dobrze się orientuję, że najlepsze rozwiązanie to same chaty obsługiwać poprzez node.js Do tej pory nikt tam nie odpisał więc z tego co wiem to jest najlepsze rozwiązanie czyli strone masz sobie w php ale chaty opierasz na node.js, z sesją nie ma problemu. :p
@mr_jaro czyli serwer w JS stawiam u siebie na kompie a na stronie wygenerowanej przez PHP ustawiam zapytania AJAXowe na swojego IP ? Bo z tego co trochę poczytałem to node.js jest aplikacją serwerową a nie skryptem więc nie uruchomię go po stronie klienta. Czy jak ty to widzisz ?
Na serwerze działają równocześnie serwer php i serwer node.js, gdzie php działa bezstanowo i tylko po wywołaniu żadania czyli otwieranie kolejnych podstron i jest mniej skomplikowane w tworzeniu natomiast na node.js stoi tylko chat, node.js umożliwia otwarcie stałego połaczenia klient-serwer dzięki czemu jest dużo wydajniejszy, potrzebujesz mniej mocy na serwerze ale w tworzeniu jest bardziej skomplikowany. Oczywiście to jest rozwiązanie tylko jeśli masz swój serwer (vps/dedyk) lub twój hosting umożliwia uruchamianie node.js.
Albo tak jak mówiłem odblokuje określone porty na routerze i node.js będę stawiał u siebie na kompie. Też jakieś wyjście ale gdybym już tak kombinował nie wiem czy nie lepiej napisać jakiegoś małego serwerka C#. To teraz kolejne mini pytanko i chyba będzie można uznać temat za zakończony. Jak odbywa się komunikacja po stronie klienta z node.js ? Jest w Java Script jakaś możliwość pracy na socket'ach czy czymś takim ? Będzie to można użyć do dowolnego serwera pracującego na socket'ach ?
w javascript w przeglądarkach jest coś takiego fajnego (i już dobrze wspieranego) jak EventSource: http://www.html5rocks.com/en/tutorials/eventsource/basics/
edit: ee, widzę, że Websockets mają się jeszcze lepiej ;)
edit2: a, zapomniałem, że to czat, eventsource nie jest dwukierunkowe, jest tylko nasłuchowe