Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> NodeJS - dobre podejście? Czemu Long Pooling zamiast WS?
adrianpl20
post
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 20.02.2014

Ostrzeżenie: (10%)
X----


Witam. Nie wiem czy w dobrym dziale piszę, więc z góry przepraszam jeśli to niewłaściwy dział (IMG:style_emoticons/default/smile.gif)
Piszę sobie portal społecznościowy i chciałbym się upewnić czy dobrą drogą podążam.
Backend głównie piszę w PHP 7, ale postanowiłem przerzucić wyświetlanie (i formatowanie postów do wyświetlenia) z PHP do NodeJS, ponieważ przy formatowaniu postów do wyświetlenia, pobieranych jest trochę danych (nazwa i avatar autora postu, ewentualne zdjęcia, ewentualne "event data" [np. jeśli to post o utworzeniu wydarzenia - to pobieram dane wydarzenia by wstawić info o wydarzeniu w tym poście]). Pomyślałem, że zamiast pobierać te dane za każdym razem po requeście do PHP, to zrobię sobie przechowywanie i aktualizowanie tych danych (użytkowników, wydarzeń, itp.) w obiektach na serwerze NodeJS, i przy formatowaniu po prostu będę wyciągał sobie potrzebne dane z obiektów - a nie z bazy danych. Jest to dobre podejście? Jakieś minusy tego rozwiązania?

Do tego serwera NodeJS (który odpowiada tylko za to pobieranie i formatowanie postów [pewnie jeszcze jakaś dodatkowa robota dojdzie dla niego]) łączę się poprzez WebSockety z przeglądarki, i mam jeszcze drugi serwer NodeJS (odpowiada za wiadomości prywatne między użytkownikami) z którym również tworzę kolejne połączenie WebSocket z przeglądarki - i moje pytanie jest następujące - czy jest to dobra droga? Sprawdziłem kilka dużych serwisów (Facebook, LinkedIn, Pinterest, Twitter) i nigdzie nie zauważyłem WebSocketów - a jedynie Long Pooling. Ja coś źle robię, czy oni używają Long Pooling z innego powodu (np. przez load balancing)?

Będę bardzo wdzięczny za wskazówki i konstruktywną krytykę (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adrianpl20
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 20.02.2014

Ostrzeżenie: (10%)
X----


Cytat(by_ikar @ 5.05.2019, 11:41:13 ) *
JS tak samo jak PHP to języki interpretowane uruchamiane w maszynie wirtualnej, która posiada swój odśmiecacz pamięci (garbage collector). To co chcesz zrobić to jest bardzo złe podejście, dlatego że garbage collector po prostu po czasie wyczyści ci wskaźniki do tych obiektów (wywali je z pamięci). W takim przypadku powinieneś używać jakiejś pamięci podręcznej, w stylu memcache, redis czy podobne, narzędzia stworzone do tego celu.

Czyli nawet wyczyści mi zmienną, w której zliczałbym sobie liczbę obecnie podłączonych użytkowników do serwera NodeJS i powinienem także do tego użyć pamięci podręcznej?

Cytat(by_ikar @ 5.05.2019, 11:41:13 ) *
Jeżeli nie masz 2 kierunkowej komunikacji, na styl czata, to websockety tylko do wysyłania informacji do użytkownika, są najzwyklej overkillem. Między innymi loadbalancing jest problematyczny, ale i sama ilość połączeń jakie taki serwis pokroju FB musiałby utrzymywać jest astronomiczna. A przechodząc do mobilnych urządzeń, gdzie takie połączenie byłoby często ubijane oraz zrywane, jest zwyczajnie mega problematyczne.

Czyli w tym moim przypadku lepszy od websocketów byłby zwykły AJAX-owy request do Nodejs, a z Nodejs zrobić endpoint api?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 19:52