![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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.
|
|
|
![]()
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 -------------------- |
|
|
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
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 ![]() 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 |
|
|
![]()
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.
-------------------- |
|
|
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 2 Dołączył: 23.07.2009 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. Tzn. tak samo by wyglądało z pobieraniem informacji? Jak taki kod miałby wyglądać? |
|
|
![]()
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
![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz 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. 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ę.
|
|
|
![]()
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
![]() 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 ![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 08:18 |