Heim  >  Artikel  >  Web-Frontend  >  Kombination von JQuery und PHP zur Implementierung von AJAX Long Polling

Kombination von JQuery und PHP zur Implementierung von AJAX Long Polling

亚连
亚连Original
2018-05-24 16:23:142107Durchsuche

Bei der herkömmlichen AJAX-Abfragemethode fragt der Client den Server in benutzerdefinierten Intervallen nach den neuesten Daten. Diese Methode zum Abrufen von Daten erfordert ein kurzes Zeitintervall, um die Genauigkeit der Daten sicherzustellen. Wenn das Zeitintervall jedoch zu kurz ist, sendet der Kundendienst in kurzer Zeit mehrere Anfragen an den Server.

HTTP ist ein zustandsloses, einseitiges Protokoll. Benutzer können Anfragen nur über den Client an den Server senden und der Server verarbeitet und sendet eine Antwort zurück. Zur Implementierung von Instant-Messaging-Anwendungen wie Chatrooms, WEBQQ, Online-Kundenservice und Postfächern muss die „Server-Push-Technologie (Comet)“ eingesetzt werden.

Bei der traditionellen AJAX-Abfragemethode fragt der Client den Server in benutzerdefinierten Intervallen nach den neuesten Daten. Diese Methode zum Abrufen von Daten erfordert ein kurzes Zeitintervall, um die Genauigkeit der Daten sicherzustellen. Wenn das Zeitintervall jedoch zu kurz ist, sendet der Kundendienst in kurzer Zeit mehrere Anfragen an den Server.

Umgekehrtes AJAX, das als Long Polling oder COMET bezeichnet wird. Der Server und der Client müssen eine langfristige Anforderung aufrechterhalten, damit der Server Nachrichten an den Client zurücksenden kann, wenn Daten vorhanden sind.

Die Zeit erreicht 80 Sekunden. Wenn während dieser 80 Sekunden kein „Erfolg“ vom Server zurückgegeben wird, bleibt der Verbindungsstatus bestehen, bis Daten zurückgegeben werden oder der Wert von „Erfolg“ 0 ist, bevor die Verbindung geschlossen wird. Fahren Sie nach dem Schließen der Verbindung mit der nächsten Anfrage fort.

<p id="msg"></p>  
<input id="btn" type="button" value="测试" />

PHP

Dies ist eine Endlosschleife. Die Endbedingung der Schleife besteht darin, das Rückgabeergebnis zu erhalten und Json-Daten zurückzugeben.

Und akzeptiert den Parameter $_POST['time'], um das Schleifen-Timeout zu begrenzen und eine übermäßige Verschwendung von Ressourcen zu vermeiden. (Der Browser sendet beim Schließen keine Nachricht an den Server und die Verwendung kann in einer Schleife fortgesetzt werden.)

$(function(){ 
 $("#btn").bind("click",{btn:$("#btn")},function(evdata){  
   $.ajax({  
    type:"POST",  
    dataType:"json",  
    url:"data.php",  
    timeout:80000,  //ajax请求超时时间80秒  
    data:{time:"80"}, //40秒后无论结果服务器都返回数据  
    success:function(data,textStatus){  
     //从服务器得到数据,显示数据并继续查询  
     if(data.success=="1"){  
      $("#msg").append("<br>[有数据]"+data.text);  
      evdata.data.btn.click();  
     }  
     //未从服务器得到数据,继续查询  
     if(data.success=="0"){  
     $("#msg").append("<br>[无数据]");  
     evdata.data.btn.click();  
     }  
    },  
    //Ajax请求超时,继续查询  
    error:function(XMLHttpRequest,textStatus,errorThrown){  
      if(textStatus=="timeout"){  
       $("#msg").append("<br>[超时]");  
       evdata.data.btn.click();  
      }  
    }  
   });  
 });  
});
Betriebseffekt: Im Bild können Sie sehen, dass die Anforderungszeit ohne Daten 40 Sekunden erreicht , und wenn die Daten während der 40S-Anfrage abgerufen werden, wird die Anfrage geschlossen.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Jquery-spezifische Beispiele zeigen, wann AJAX verwendet werden sollte und wo AJAX verwendet werden sollte

Informationen zu domänenübergreifenden Ajax-Problemen Zwei Lösungen

js Ajax-Fortschrittsbarcode beim Laden

Das obige ist der detaillierte Inhalt vonKombination von JQuery und PHP zur Implementierung von AJAX Long Polling. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn