Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Realtime - ! (setInterval etc.)
matrik
post 18.11.2010, 15:18:09
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


Witam

W jaki sposób można zastąpić XMPP?
Chodzi mi o klienta JS, który mógłby sprawdzać w czasie rzeczywistym czy dany status się zmienił,
np.
- Użytkownik A wysłał wiadomość do użytkownika B
- Użytkownik B otrzymał powiadomienie na stronie, że jest nowa wiadomość (powiadomienie nie zostało wyświetlone z akcji przeładowania strony)

Takie coś zauważyłem przypadkowo na Facebooku, m.i. Gdy wysłałem wiadomość z jednego konta na drugie (nie poprzez czat), to wykonanie akcji pobrania statusu nowej wiadomości było natychmiastowe.
Czy to zastosowanie po prostu klienta jabbera JS + biblioteki jabbera PHP??

Uwagi:
- podobne do funkcji setInterval
- JS nie pobiera okresowo co x sekund, tylko jeśli status 'czegoś tam' jest pozytywny

Myślę, że zastąpieniem XMPP może być utworzenie aplikacji w zwykłym kodzie PHP i sprawdzaniu statusu danej części strony przez setInterval z okresem 3-5s, jednak nie do tego dążę.

*Chcę ograniczyć wydatki na serwer dedykowany dla postawienia jabbera
Go to the top of the page
+Quote Post
Crozin
post 18.11.2010, 15:48:06
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


WebSockets? Lub emulowanie tego jeżeli zależy Ci na wsparciu IE.
Go to the top of the page
+Quote Post
wookieb
post 18.11.2010, 15:58:34
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://www.ape-project.org/
Ewentualnie może być NODE.js ale to już wyższa szkoła jazdy.
W skrócie PUSH ajax polega na tym aby żądanie czekało na odpowiedź serwera. I tak też skrypt nie odpowie dopóki nic nie będzie do zwrócenia dla żądania.

Ten post edytował wookieb 18.11.2010, 15:59:57


--------------------
Go to the top of the page
+Quote Post
matrik
post 18.11.2010, 17:22:30
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


IE odpada
a interesuje mnie ape-project, do tego chyba trzeba mieć serwer dedykowany?
Go to the top of the page
+Quote Post
Crozin
post 18.11.2010, 17:35:53
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Teraz dopiero zauważyłem, że WebSockets ( http://caniuse.com/#feat=websockets ) będzie można używać dopiero za kilka miesięcy gdy FF4/O11 zostaną wydane (WebKit już to wspiera).

Cytat
a interesuje mnie ape-project, do tego chyba trzeba mieć serwer dedykowany?

Cytat
APE Server is an Comet server implementing the POST and GET methods of the HTTP protocol. It does not replace a regular Web Server (such as Apache, Lighttpd or Nginx), however, the APE Server is only used for AJAX Push.
Wygląda na to, że tak.
Go to the top of the page
+Quote Post
matrik
post 18.11.2010, 17:51:56
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


nie mam pomysłu jak by to miało działać
mam wiedzę jako taką co do js, ale nie taką, żeby strona była jednym wielkim elementem dynamicznym - chodzi mi tu o Facebooka haha.gif
za to co do PHP trzeba dobrze pomyśleć jaka baza mogła by obsłużyć tyle zapytań w danym czasie - cache to raczej odpada bo zwracało by tylko cyfry, żadnych stringów + JSON dla zapytań ajaxowych
Go to the top of the page
+Quote Post
wookieb
post 18.11.2010, 18:02:17
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie jest wymagany dedyk do takich rzeczy. Dla APE-project może tak, ale zrobisz to najzwyklejszym ajaxem.


--------------------
Go to the top of the page
+Quote Post
matrik
post 18.11.2010, 19:48:06
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


Do takich rzeczy... XMPP na VPS czy RPS w OVH?
----
Ale chodzi mi konkretnie tylko i wyłącznie o optymalizacje
Jak niby Facebook może obsługiwać tyle zapytań? Przecież niepotrzebne zapytania do SQL są zabójcze, omijając fakt, że serwis jest na klastrowej strukturze serwerów dedykowanych.
Mam pytanie:
Jaki i w czym napisać kod, tak aby jak najmniej wykonywać zapytań dotyczący tego problemu, nie chodzi o cache?
jQuery->load odpada - nie ma o czym nawet mówić
ajax też, ale służyć może do pobierania przecież
a co do PUSH ajax, coś więcej na ten temat od was?
Go to the top of the page
+Quote Post
Mephistofeles
post 18.11.2010, 20:02:31
Post #9





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


W tym wypadku to nie przeglądarka wywołuje żądania, a otwiera jedno dłuugie, i serwer odpowiada w momencie np. wysłania wiadomości, więc nie ma tu niepotrzebnych zapytań itp.
Go to the top of the page
+Quote Post
matrik
post 18.11.2010, 20:37:19
Post #10





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


Cytat(Mephistofeles @ 18.11.2010, 20:02:31 ) *
W tym wypadku to nie przeglądarka wywołuje żądania, a otwiera jedno dłuugie, i serwer odpowiada w momencie np. wysłania wiadomości, więc nie ma tu niepotrzebnych zapytań itp.

Tzn. tak samo by wyglądało z pobieraniem informacji?
Jak taki kod miałby wyglądać?
Go to the top of the page
+Quote Post
Mephistofeles
post 18.11.2010, 22:11:00
Post #11





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Nie wiem biggrin.gif. Poczytaj o Comet / Reverse AJAX.
Go to the top of the page
+Quote Post
zegarek84
post 19.11.2010, 01:59:14
Post #12





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(Mephistofeles @ 18.11.2010, 20:02:31 ) *
W tym wypadku to nie przeglądarka wywołuje żądania, a otwiera jedno dłuugie, i serwer odpowiada w momencie np. wysłania wiadomości, więc nie ma tu niepotrzebnych zapytań itp.

aby otworzyć żądanie musi otworzyć to żądanie - brzmi może nie logicznie ale...
kiedyś tam skomentowałem jednego bloga -
wspomniane jest tam o tym co jest zacytowane:
Komunikacja z serwerem w czasie rzeczywistym

nie jestem programistą więc skoro nie miałem potrzeby nie stosowałęm tej metody później - ale na 99% zadziała


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
matrik
post 21.11.2010, 15:52:47
Post #13





Grupa: Zarejestrowani
Postów: 115
Pomógł: 2
Dołączył: 23.07.2009

Ostrzeżenie: (0%)
-----


Szukam zaskakująco prostego rozwiązania, a im coraz bardziej szukam tym staje się bardziej skomplikowane haha.gif
Do takiej komunikacji jest jednak potrzebny serwer dedykowany, i jednak zastosowanie XMPP/Jabber + klient JS na stronie tego będzie szerokie, bez wykorzystywania dodatkowych technologii programowania.
Nie każdy użytkownik ma zainstalowane platformy JAVA, która nie cieszy mnie zastosowaniem do tego projektu w podtrzymywaniu połączenia.
Wykorzystanie w PHP sleep i foreach też nie jest zbyt optymalnym rozwiązaniem, jeśli użytkowników na stronie będzie więcej niż 500 online to nawet taki prosty kodzik będzie bezsensowny, jeśli ma szperać w bazie, która ma setki tysiące rekordów. Jednak co do bazy to nie ten temat.

Więc APE-Project jako klient komunikatora na stronie to jest już coś.

Co do zapytań, to oczekiwanie na odpowiedź poprzez otwarcie "okna" połączenia. Zapytania można popatrzeć w Developer Tools - Chrome.
Całe połączenie lub oczekiwanie na wynik jeśli się nie mylę powinien
1. Wysłać zapytanie do skryptu PHP (max. 5ms)
2. Oczekiwanie max 60sec na pozytywny wynik zwrócony przez skrypt PHP (w tym punkcie nie mam pojęcia jak ma to się odbywać)
- wznowienie zapytania jeśli po upływie 60sec. nie zostanie zwrócony pozytywny wynik
3. Otrzymanie wyniku (max. 10ms) - przekazanie do klienta

Chyba znalazłem coś co by zastąpiło XMPP tongue.gif
A mianowicie wykorzystywane jest to w Plupload.com - plugin do wysyłania plików poprzez AJAX.
Można to wykorzystać do komunikacji pomiędzy userami?

Ten post edytował matrik 19.11.2010, 10:57:44
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 08:18