2010-04-12 10 views
5

Ham XmlHttpRequestObjects + Comet Long Polling ile biraz oynarım.Kuyruk (uzun yoklama) ve XmlHttpRequest durumu

function longPoll() { 
    var xhr = createXHR(); // Creates an XmlHttpRequestObject 
    xhr.open('GET', 'LongPollServlet', true); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 

     if (xhr.status == 200) { 
      ... 
     } 

     if (xhr.status > 0) { 
      longPoll(); 
     } 
    } 
    } 
    xhr.send(null); 
} 

... 
<body onload="javascript:longPoll()">... 

I longPoll() çağrıyı sarılmış: (. Genellikle, GWT ya da benim için bu bir başka çerçeve kolu izin verirdim, ama bu konuda daha fazla bilgi edinmek istiyorum)

Aşağıdaki kodu yazdım status > 0 için kontrol eden bir ifade, karşılaştığım için, sayfayı terk ettiğimde (başka bir yere gözatarak veya yeniden yükleyerek) son gereksiz bir kuyruklu yıldız işareti gönderilir. [I henüz tam anlamıyorum nedense, bir sayfayı yeniden yaparken Ve Firefox üzerinde, hatta ciddi sorunlara neden olmaktadır.]

Soru:status Bu problemi çözmek için doğru şekilde kontrol etmenizi mi, ya da daha iyi bir çözüm var mı?

+0

nolu hile yapmalıdır. GWT, bahsettiğin gibi, jquery, vb? – fig

+0

@ fig-gnuton: Emin değilim, eğer oluşturulan javascript kodunu takip etmek gerçekten kolaysa (javascript guru değilim ...) –

+0

Eğer ham XHR ile oynayabilecek kadar bilginiz varsa, Jquery ya da diğer lib'lere bakmaktan çekinmeyin. Tamamen yorumlanmış kaynak sürümleri var. – fig

cevap

3

Geçerli cevabım - kanıtlanmış olana kadar - çözümün doğru olduğu.

0

Bu döngünün sadeliğini beğendim .... sunucu tarafı betiğinin uykuya dalması veya atleast döngü olduğunu düşünürüm, ancak normal sorgulama yapılmasına rağmen uzun sorgulamadan önce yeni veriler elde edilene kadar. Gerçi isteklerin başarısız olup olmadığını kontrol etmek için bir şeyler eklerim. Bunu bir try catch bloch içinde sarmak,