[ Lord_Nenad @ 08.12.2009. 01:15 ] @
Da li neko zna zasto se posle nekog vremena iskljuci ova scripta:

Code:

function ajaxFunction(urlL)
{

var xmlHttp;
xmlHttp=new XMLHttpRequest();

xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
    setTimeout("sledeci('" + urlL + "')",2000);
      }
    }

  xmlHttp.open("GET",urlL,true);
  xmlHttp.send(null);


}

function sledeci(urlLx)
{
ajaxFunction(urlLx);
}


Naravno, ovo nije cela skripta, ali ovo je ono gde nastaje problem...
Chat radi neko vreme i onda jednostavno se prekine ovaj krug...

Zna li neko u cemu moze biti problem?

Da li neko ima bolji primer koji se moze koristiti za chat, neki sigurniji, bez prekida?
Interval se ne moze koristiti jer se moze desiti usporavanje mreze i onda nagomilavanje zahteva...
Tako da je jedini nacin da se pokrene tajmer nakon prijema podataka... Samo da ne dodje do ove greske... :/
[ vatri @ 08.12.2009. 14:14 ] @
Iz ovoga se ne moze nista vidjeti (bar ja ne mogu). Mozda negdje imas kakav clearTimeout? Najbolje bi bilo da postavis cijelu skriptu (samo JS bez PHP-a).
[ Lord_Nenad @ 08.12.2009. 16:06 ] @
Scripta je ogromna, ali ovaj deo je glavni... jer sve ispod ovog se svodi na to kako je pozvana scripta, gde se upisuje odgovor servera itd...
Ali u svakom slucaju mora da se pokrene ovaj timer, nema nikakvo IF koje ce kontrolisati da li ce se timer pokrenuti ili ne...
Nema nikakva greska, nista sto bi moglo prekinuti ovaj krug... Nema nigde clearTimeout.

Jedini problem moze biti sa ovim: "if(xmlHttp.readyState==4)"
Posto 4 je ako se dobije odgovor od servera... I problem nastaje ako ne dobije odgovor... Ako ga nesto prekine... Da li moze biti ovakva greska?
[ vatri @ 08.12.2009. 16:50 ] @
Pa ne znam, moguce. Ne znam jel se prekine "timer" ako ne dobije odgovor. Progooglaj malo.

Mozes probati sa jQuery-jem to srediti ako ti se zuri, ako ne, onda je bolje da to sam sredis - nesto ces sigurno nauciti.
[ Lord_Nenad @ 08.12.2009. 17:30 ] @
Pa timer se prekine ako se ne pojavi xmlHttp.readyState kao 4... Mada... To valjda ne bi trebalo da se desi...
Treba uvek da prodje od 0 do 4 stepena... Ako ne bude odgovora od servera onda u 4om stepenu treba da bude "page timeout" odogovor...
[ Nikola Poša @ 08.12.2009. 18:47 ] @
Ajde kad ti chat skripta prestane sa radom, ako koristiš Firefox, proveri u Tools -> Error Console, da li ti piše greška "Too much recursion" ili tako nešto. Čini mi se da je to problem. Ja mislim da bi trebao drugačije da rešiš tu logiku "beskonačnog" izvršavanja te skripte. Taj setTimeout bi trebao bi trebao da se pozove samo jednom, a ne rekurzivno.
[ Lord_Nenad @ 08.12.2009. 19:12 ] @
Gledam to stalno i nema nikakve greske... Na osnovu toga uglavnom sredjujem scriptu...

setTimeout se pozove jednom, i kad istekne taj period on salje zahtev da dobije poruke... I za par sekundi kad se dobije odgovor on ponovo pozove taj timer...
I sve tako...
Tako se odrzava savrsena kontrola zahteva i sprecava se njihovo naglomilavanje... ( Naravno da nema ovog iskakanja, sto pokusavam da popravim )...

setInterval je bolji za ponavljanje ovakvih funkcija, ali se ne moze da koristi jer se tako pozove vise istih zahteva i usto vreme i tako se pretrpaju...
[ programer.master @ 10.12.2009. 14:21 ] @
Moze da se desi da ti server izblokira ili nestane paket koji je poslao itd
itd i onda naredba setTimeOut nece se vise nikad ponovo izvrsiti..
mozda se napuni heap zbog iznova i iznova pravljenje objekta pa probaj da
izbacis ove dve linije var xmlHttp;xmlHttp=new XMLHttpRequest(); iz funkcije
spolja
Ako proradi castis pivcem


> 2009/12/8 Lord_Nenad <[email protected]>
>
> Gledam to stalno i nema nikakve greske... Na osnovu toga uglavnom sredjujem
>> scriptu...
>>
>> setTimeout se pozove jednom, i kad istekne taj period on salje zahtev da
>> dobije poruke... I za par sekundi kad se dobije odgovor on ponovo pozove taj
>> timer...
>> I sve tako... Tako se odrzava savrsena kontrola zahteva i sprecava se
>> njihovo naglomilavanje... ( Naravno da nema ovog iskakanja, sto pokusavam da
>> popravim )...
>>
>> setInterval je bolji za ponavljanje ovakvih funkcija, ali se ne moze da
>> koristi jer se tako pozove vise istih zahteva i usto vreme i tako se
>> pretrpaju...
>>
>> --
>> http://www.elitesecurity.org/p2460604
>>
>>
>> Prijave/odjave: http://www.elitesecurity.org/liste
>>
>> Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!
>> esauth:384085:9081cd1969abace460839ab0c918a104
>>
[ Lord_Nenad @ 10.12.2009. 15:40 ] @
Hmmm... Ukoliko se izgubi paket i server zablokira onda browser nece dobiti odgovor na taj request, ali ce se opet posle 30 sekundi ( ili koliko je podeseno ) pojaviti timeout, a to je isto neki odgovor, tj bice state 4... ali ce biti xmlHttp.status != 200... tj da stranica nije lepo otvorena...
Bar ja tako mislim, ispravite me ako gresim...

Ovo drugo... Valjda ako stavim jednu variablu preko druge, tj. dva puta definisem jednu i dodelim joj neku vrednost, valjda se ona prva gubi?
Ako izbacim te dve linije onda se nece moci pokrenuti drugi request dok je jedan vec pokrenut...

Ili je mozda u tome i problem, sto se vise puta radi request i ponekad u isto vreme se urade dva?
[ mimce87 @ 18.11.2010. 18:59 ] @
kako Napraviti chat aplikaciju u kojoj će se komunikacija između korisnika odigravati 1:1 i kompletan sadržaj razgovora biće pamćen u bazi podataka. Korisnici moraju imati mogućnost ignore opcije koja će onemogućiti da im se određeni korisnik obraća. Takođe, aplikacija mora imati opciju prikaza lista svih korisnika iz koje je moguće odabrati sagovornika za chat.
[ vatri @ 19.11.2010. 07:29 ] @
Uzmes PHP/MySQL/Javascript i napises kod i eto aplikacije.

Mozes i recimo u Python/C++/Java uraditi, samo izaberi