Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][JavaScript][PHP]Zdalne wywołanie porcedury na klientach - hostach., Inicjowanie wywołania zdarzenia z serwera www na kodzie u klienta.
fiasko
post 19.04.2011, 22:48:06
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


Chcę zdalnie wywołać procedurę z serwera www na hoście u klienta w jego przeglądarce.

Chcę stworzyć np. chat za pośrednictwem serwera www.

Jak zdalnie na końcówce klienta wywołać żądanie pobrania zawartości wiadomości w momencie gdy do serwera dotrze wiadomość?

Zewnętrzny host nie może sam dobijać się na serwer przez odświeżanie. Serwer ma powiadomić hosta o wiadomości i dopiero wtedy on ją pobiera.


Chcę zrobić tak: klient uruchamia aplikację . Następnie loguje się do serwera , przesyła swoje IP i co 15 sek powiadamia serwer o swojej aktywności. Dzięki temu będę miał status .

To teraz jeszcze pytanie jak wysłać do przeglądarki dane z serwera i zainicjować wywołanie funkcji ?

Ten post edytował fiasko 20.04.2011, 00:03:24
Go to the top of the page
+Quote Post
--zegarek84--
post 20.04.2011, 13:27:29
Post #2





Goście







jeśli chcesz to zrobić za pomocą JavaScript to musisz odpytać serwer - jednak nie musisz odpytywać go co sekundę - poczytaj o long poll ajax - można także posłużyć się innymi trickami jak JSONP do skryptu PHP itd. - lub skorzystaj z jakiegoś klienta napisanego we flashu do obsługi socketów współpracującego z JavaScript...
Go to the top of the page
+Quote Post
fiasko
post 20.04.2011, 13:32:01
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


A JSONP daje możliwość zdalnego wywołania funkcji w js ?

Proszę o przykładowe kody.
Go to the top of the page
+Quote Post
wNogachSpisz
post 20.04.2011, 15:03:05
Post #4





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Musisz przepytywać serwer co jakiś czas.

Long Poll? czyli wysyłanie zapytania losowo, powiedzmy co 1 - 5 sekund?
Bez większego sensu.

JSONP - script include?
Co to ma do rzeczy?
Go to the top of the page
+Quote Post
fiasko
post 20.04.2011, 15:36:33
Post #5





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


No ale ja nie chcę przepytywać. Szukam rozwiązania , które samo wymusi inicjację . To ma działać na zasadzie RPC.

Ten post edytował fiasko 20.04.2011, 15:37:56
Go to the top of the page
+Quote Post
wNogachSpisz
post 20.04.2011, 17:46:53
Post #6





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(fiasko @ 20.04.2011, 16:36:33 ) *
No ale ja nie chcę przepytywać. Szukam rozwiązania , które samo wymusi inicjację . To ma działać na zasadzie RPC.

Nie da się, klient jest nieosiągalny dla serwera.
Inicjować połączenie musi klient.
Go to the top of the page
+Quote Post
fiasko
post 20.04.2011, 19:49:21
Post #7





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


A to ktoś z was testował ?

http://www.tanabi.com/projects/jsonrpc
Go to the top of the page
+Quote Post
#luq
post 20.04.2011, 20:13:48
Post #8





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Cytat(wNogachSpisz @ 20.04.2011, 18:46:53 ) *
Nie da się, klient jest nieosiągalny dla serwera.
Inicjować połączenie musi klient.


Tam, pierdoły saskie...
http://nodejs.org/


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
zegarek84
post 20.04.2011, 22:42:38
Post #9





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

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


Cytat(fiasko @ 20.04.2011, 14:32:01 ) *
A JSONP daje możliwość zdalnego wywołania funkcji w js ?
ogólnie tutaj jest zasada, iż w DHTML'u dołączasz do drzewa DOM zewnętrzny skrypt JS i nie musi to być JSON - tak więc tak - można zdalnie wywołać funkcję... a i adres do skryptu js nie musi się kończyć na js do plików statycznych gdyż może się odwoływać do skryptu php który oczywiście musi zwrócić poprawny kod JavaScript...
Cytat(wNogachSpisz @ 20.04.2011, 16:03:05 ) *
Long Poll? czyli wysyłanie zapytania losowo, powiedzmy co 1 - 5 sekund?
Bez większego sensu.

nie żadne losowe zapytanie do serwera - sprawdź pierwszy lepszy wynik w google ;/
Cytat(wNogachSpisz @ 20.04.2011, 16:03:05 ) *
JSONP - script include?
Co to ma do rzeczy?

to samo co long poll ajax - skrypt do którego się odwołasz nie musi od razu odesłać treści, może on sprawdzać czy coś zmieniło się na serwerze i gdy się zmieni wygenerować ową treść i wysłać - połączenie z serwerem będzie "wisiało" co prawda zainicjowane przez przeglądarkę, jednak zostanie zakończone albo po otrzymaniu odpowiedzi/przekroczeniu czasu oczekiwaniu/jakiś błąd...
Cytat(#luq @ 20.04.2011, 21:13:48 ) *
Tam, pierdoły saskie...
http://nodejs.org/

kiedy to po prostu prawie jakby pisał w PHP tyle że po stronie serwera zmieni język na JavaScript [SSJS]... ale i tak jakby nie było musiałby mieć albo jakiegoś klienta obsługującego sockety np. we flashu lub skorzystać w JS ale po stronie klienta/przeglądarki [czyli z CSJS] z zasady podobnej jak to w long poll ajax...

zresztą odsyłam do bloga:
Komunikacja z serwerem w czasie rzeczywistym - oraz ewentualnych komentarzy gdzie wspomniałem o czystym JS...

Ten post edytował zegarek84 20.04.2011, 22:44:46


--------------------
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
wNogachSpisz
post 21.04.2011, 10:01:04
Post #10





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(#luq @ 20.04.2011, 21:13:48 ) *
Tam, pierdoły saskie...
http://nodejs.org/

Nie pierdoły, tylko dokładnie tak jest jak napisałem..

HA! HA! HA! - mało co nie pękłem ze śmiechu.
Co ma do tego wszystkiego node.js?
Przecież to technologia do obsługi serwera www.
Nie wprowadzania ona NIC w temacie ograniczeń warstwy transportowej.
A to właśnie tam jest bariera, serwer nie może być stroną rozpoczynającą negocjację połączenia i koniec!


Cytat(zegarek84 @ 20.04.2011, 23:42:38 ) *
zresztą odsyłam do bloga:
Komunikacja z serwerem w czasie rzeczywistym - oraz ewentualnych komentarzy gdzie wspomniałem o czystym JS...

Nie rozumiem, po jakiego grzyba ten flash?questionmark.gif


P.S
Koniecznie zajrzyj na http://ajaxpatterns.org/

Ten post edytował wNogachSpisz 21.04.2011, 10:11:25
Go to the top of the page
+Quote Post
zegarek84
post 21.04.2011, 10:14:16
Post #11





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

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


Cytat(wNogachSpisz @ 21.04.2011, 11:01:04 ) *
Nie rozumiem, po jakiego grzyba ten flash?questionmark.gif
nie jest potrzebny flash chyba, że ktoś chce to zrobić na socketach - komunikację jak w temacie - sockety jeszcze nie we wszystkich przeglądarkach są wprowadzone - co do symulacji po stronie ajax też pisałem tam w komentarzach...

Cytat(wNogachSpisz @ 21.04.2011, 09:16:51 ) *
Nie wprowadzania ona NIC w temacie ograniczeń warstwy transportowej.
A to właśnie tam jest bariera, serwer nie może być stroną rozpoczynającą negocjację połączenia i koniec!

racja - nic dodać nic ująć
Cytat(wNogachSpisz @ 21.04.2011, 09:16:51 ) *
Co ma do tego wszystkiego node.js?
Przecież to technologia do obsługi serwera www.

ale tu trochu umniejszyłeś jego możliwości [choć fakt głównie do tego jest stosowany i powstał z myślą o SSJS], jest to fremwork ale głównie do obsługi socketów - więc za jego pomocą można zaimplementować dowolny serwer nie tylko WWW...

idąc dalej jeśli ktoś pisze w PHP i chciałby odciążyć serwer by oprócz zainicjowanych połączeń które muszą wisieć by serwer mógł w danej chwili odpowiedzieć by nie "wisiały" także ociężałe skrypty [ich procesy] PHP można napisać własny mini serwer WWW nasłuchujący na socketach by tylko jeden proces obsługiwał takie połączenia a nie cały tuzin i więcej - jednak jest to już trochu grubszy temat i skoro pojawiły się pytania o przykładowe skrypty to o tym chyba bez potrzeby wspominam... by nie pisać obsługi socketów od 0 do mini serwera można by skorzystać z jakiejś biblioteki lub je zmodyfikować - mi są znane tylko 2:
Nanoserv i phpsocketdaemon [małe stare porównanie między nimi]

jednak pisząc własny mini serwer gdzie proces będzie stale uruchomiony, trzeba pamiętać o kilku podstawowych zasadach - a przede wszystkim jednej - trzeba po sobie sprzątać gdyż może dojść do wycieku pamięci - czyli nieużywane zmienne null'ować lub unset'ować... i dobrze by to było napisać lub zaprojektować zdarzeniowo ;] - pozatym ze zmiennymi globalnymi a co za tym idzie także statystycznymi to trzeba ich używać z rozwagą by się nie zaplątać przy obsłudze różnych połączeń ^^

Ten post edytował zegarek84 21.04.2011, 10:22:34


--------------------
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
wNogachSpisz
post 21.04.2011, 10:25:57
Post #12





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Rodzi się pytanie.
Po co pisać własny serwer www?
Są lepsze, Apache, lighttp.
PHP to ostatnie narzędzie jakiego bym użył do obsługi socketów.
Ponadto nie zadziała to na praktycznie żadnym hostingu www.
Nie potrafię doszukać się nawet cienia sensu w tym co wypisujesz.

Ten post edytował wNogachSpisz 21.04.2011, 10:31:52
Go to the top of the page
+Quote Post
zegarek84
post 21.04.2011, 10:41:30
Post #13





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

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


Cytat(wNogachSpisz @ 21.04.2011, 11:25:57 ) *
Rodzi się pytanie.
Po co pisać własny serwer www?
Nie widzę szansy na jakikolwiek zysk.

przy obsłudze wielu połączeń opartych na zasadzie podtrzymanego połączenia jak long poll ajax lub dłuższej komunikacji z serwerem poprzez sockety np. przy wykorzystaniu flasha [także "wisi" połączenie] jeśli to wykonać bez serwera który sprawdza czy jest coś do wysłania i zarządza wszystkimi połączeniami w prostszej formie pisze się skrypta php gdzie w pętli musiałby sprawdzać na serwerze czy może już wysłać treść i jaką treść [mający jakiegoś sleep'a coby serwera nie zajechać] - bez serwera obsługującego te połączenia przy wielu połączeniach musi być uruchomionych wiele ociężałych skryptów [co za tym idzie wiele procesów] z całą otoczką z logiką podobną jak przy jednym mini serwerze gdzie trzeba sprawdzać czy coś wysłać i wstrzymywać połączenie... jest 10 połączeń to wisieć na np. sleepie i pętli sprawdzającej czy coś wysłać musi 10 skryptów i tak jeden do 1 - przy miniserwerze jeden proces obsługuje wszystkie połączenia na danym sockecie...

sorki ale jakoś nie umiem przelać tego na słowa i nie wiem, czy to jakoś strawnie opisałem...


Cytat(wNogachSpisz @ 21.04.2011, 11:25:57 ) *
PHP to ostatnie narzędzie jakiego bym użył do obsługi socketów.
Ponadto nie zadziała to na praktycznie żadnym hostingu www.
Nie potrafię doszukać się nawet cienia sensu w tym co wypisujesz.
o mini serwerze wspomniałem w celach optymalizacji - a więc już przy wielu połączeniach gdy w zasadzie ma się już serwer dedykowany... do prostych rozwiązań wystarczy jak skrypt i połączenie sobie po prostu będzie wisiało... skoro znasz inne języki to nie ma problemu napisać obsługę socketów w innym języku ;D - ogólnie przecież wszystko można napisać w całkiem innym języku - nawet w JavaScript [w końcu SSJS istniał także od dawna jednak nie był wykorzystywany głównie ze względu wcześniej na słaba wydajność - po za tym do obecnych rozwiązań w tym kierunku tez trzeba mieć dedyka wink.gif]


--------------------
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
wNogachSpisz
post 21.04.2011, 10:49:48
Post #14





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Zamiast tej rzeźby, wystarczy dać:
Kod
Connection: Close
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: 15.08.2025 - 02:55