Automatsko osvezavanje
Pozdrav ljudi.
Nov sam ovde (tj nisam nov ali prvi put pišem :) ) jer sam skontao da ako ovde ne nađem odgovor verovatno neću nigde :) Naime, zanima me sledeće: Recimo da imamo Osobu A koja je za svojim računarom i Osobu B koja je za nekim udaljenim računarom. Oni istovremeno gledaju neki sadržaj na sajtu (koji je izvučen iz baze). Kako mogu da uradim da, kada se taj sadržaj izmeni na neki način (bilo administrator bilo neki drugi korisnik) da se automatski prikaže i Osobi A i Osobi B bez refreša??? (nešto kao npr neki komentar na FB, gde kada neko nešto iskomentariše automatski se prikaže svim korisnicima koji se nalaze na toj strani). Ne tražim da mi neko uradi ili šta već, nego samo da mi objasni kako se to radi, jer moje znanje AJAX-a ne obuhvata taj slučaj :) Imam još jedno pitanje ali neću sada smarati s tim, jer mi je ovo važnije i ako ovo ne odradim to drugo mi neće ni trebati :) |
Postoje dva načina.
Prvi je da browseri obe osobe konstantno u pozadini preko AJAX poziva proveravaju u određenom intervalu da li je došlo do promene. Ukoliko je došlo do promene osveži se odgovarajući sadržaj. Drugi način je daleko komplikovaniji jer podrazumeva tehnologiju koja bi trebalo da natera "internet" da radi ono za šta nije napravljen. Odnosno oba klijenta održavaju konekciju sa serverom, ne zatvaraju je a server ih obavesti preko otvorene konekcije kada dođe do promene. Ako te interesuje potraži COMET na googlu. |
Pozdrav,
pa zavisi da li je taj sadrzaj na celoj strani ili samo u jednom delu strane. Ako je cela strana onda mozes kroz metu da kazes toj strani da se refreshuje posle odredjenog vremena. Ako je deo strane onda mozes kroz iframe da uvuces sadrzaj sa druge strane (na kojoj stavis ove podatke iz baze) i onda toj strani koju uvlacis kroz iframe kazes kroz metu da se refreshuje posle odredjenog vremena. Evo koda za refresh strane kroz meta podatke posle 120 sekundi: <meta http-equiv="refresh" content="120; url=index.php"> |
Hvala vam za odgovore.
Ne treba mi cela strana već samo neki delovi (ovako nešto http://www.nekajacu.com/list/live ). Ovde ima više ovih aukcija i svaka ima sopstveni brojač. Mene zanima kako mogu da uzmem vreme iz baze (za više aukcija) i onda da pomoću JS-a odbrojavam, i kada neko klikne da se automatski poveća vreme svim ljudima koji to gledaju. Ja kapiram jedino ovaj način gde bi svaki korisnik, svake sekunde, proveravao bazu preko AJAX-a, ali sada mi se javio novi problem, kako pozivati AJAX svake sekunde i to za više aukcija istovremeno??? AJAX koji sam do sada radio se aktivirao preko nekog događaja (klik na link, na dugme, padajuća lista itd) ali ovo ne zahteva nikakvu akciju... Ova fora sa refrešom preko meta taga može da odradi posao, ali mislim da postoji bolji način, jer on nije baš optimalan a i refrešuje celu stranu... |
Citat:
Za period od jedne sekunde ti nemaš garanciju ni da će prethodni http poziv biti odrađen i vratiti rezultate, a ti već šalješ novi http zahtev? To neće biti dobro ni za server a ni za klijent browser, zavisi naravno i od broja poseta i ukupnog broja upita. Dakle uzmi neki veći interval, 30 sekundi recimo. |
Potrebno ti je više znanja nego što trenutno poseduješ da bi ovo uspešno implementirao. Ali pokušaću da te navedem na pravi put.
"kako pozivati AJAX svake sekunde" Da bi konstantno izvršavao određenu funkciju u browseru potrebna ti je setInterval() funkcija. " i to za više aukcija istovremeno???" Ovo pitanje pokazuje da nisi dobro razumeo sistem koji pokušavaš da implementiraš. Može se implementirati na više načina. Na primer najjednostavniji način ti je da svaka aukcija ima jedinstveni identifikator. Na serveru napraviš skriptu koja ispituje stanje akucije. Toj skripti prosledjujes identifikator aukcije a ona vraća informacije o toku aukcije. Što se tiče sinhronizacije vremena sve mora da se odvija na serveru. Odnosno server sadrži svu logiku za upravljanje akcijama. Merenje i prikazivanje vremena u browseru služi samo kao referenca koja se osvežuje na osnovu informacija koje server pruža. |
Citat:
Plus je tu fazon sa dinamičkim prilagođavanjem tog intervala: kad duže nema saobraćaja, povećaš interval na (npr) 5 sekundi, a kad se kuca, smanjiš ga na (npr) pola sekunde... |
Citat:
Shelle za početak treba da shvati koncept, a posle ti možeš da mu pokazuješ finte i zalamanja. :) |
^ Čini mi se da bi Shelle prvo trebalo da savlada neke osnove pa tek onda da se bavi tim stvarima :)
|
Off Topic: čini mi se da bulletin board konceptu koristilo malo realtime updejtova kako bismo izbegli ovakve trenutke :) |
Vreme je GMT +2. Trenutno vreme je 00:50. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.