Kennen Sie Reverse Ajax? Wissen Sie, wie Reverse Ajax implementiert wird? Ich weiß es noch nicht einmal. Kommen Sie und lesen Sie diesen Artikel, der detaillierte Informationen über Reverse Ajax enthält. Beginnen Sie unten mit dem Lesen dieses Artikels
Was ist Reverse Ajax?
Reverse Ajax (Reverse Ajax) ist im Wesentlichen ein solches Konzept: die Möglichkeit, Nachrichten vom Server an die Clientdaten zu senden. Bei einer Standard-HTTP-Ajax-Anfrage werden Daten an den Server gesendet. Reverse Ajax kann das Erstellen einer Ajax-Anfrage auf bestimmte Weise simulieren, sodass der Server Ereignisse so schnell wie möglich an den Client senden kann (Kommunikation mit geringer Latenz).
So implementieren Sie Reverse Ajax
1. Polling
Polling ist tatsächlich die dümmste Art, Reverse Ajax zu implementieren. Methode: Verwenden Sie Javascript, um Ajax-Anfragen zu senden regelmäßig auf dem Client.
setInterval(function() { $.getJSON('events', function(events) { console.log(events); }); }, 2000);12345
Um möglichst schnell serverseitige Ereignisse zu erhalten, muss das Polling-Intervall (die Zeit zwischen zwei Anfragen) möglichst klein sein. Der Nachteil liegt auf der Hand: Wenn das Intervall verkürzt wird, sendet der Client-Browser mehr Anfragen, von denen viele keine nützlichen Daten zurückgeben, was Bandbreite und Prozessressourcen verschwendet.
2.PiggyBack (PiggyBack)
PiggyBack ist ein intelligenterer Ansatz als Polling, da alle nicht wesentlichen Anfragen (diejenigen, die keine Daten zurückgeben) gelöscht werden. .
Es handelt sich um eine semiaktive Methode, was bedeutet, dass der Browser die Anfrage weiterhin aktiv ausgibt, aber in der Antwort auf jede Anfrage zusätzlich zur aktuellen Antwort auch die seitdem aufgetretenen Informationen enthält Mit der letzten Anfrage werden Änderungen an den Browser gesendet.
Mit anderen Worten, das angeforderte Update wird in die Antwort der nächsten Anfrage übernommen und zurückgesendet. Auf diese Weise hat der Browser das Gefühl, als sei die letzte Anfrage aktualisiert worden. Dieses Gefühl hängt jedoch davon ab, wie oft der Browser Anfragen an den Server stellt. Wenn die zweite Anfrage nicht ausgegeben wird, wird die letzte Aktualisierung nicht abgerufen.
3. Comet (Server-Push)
Dies ist eine „Server-Push“-Technologie, die auf langen HTTP-Verbindungen basiert.
Es gibt zwei Hauptimplementierungsmethoden:
1) HTTP-Streaming (HTTP-Streaming)
Eingebettet in die Seite Für B. einen versteckten Iframe, setzen Sie das src-Attribut des versteckten Iframes auf eine Anforderung für eine lange Verbindung oder verwenden Sie eine XHR-Anfrage, und der Server gibt kontinuierlich Daten an den Client ein.
Vorteile: Nachrichten kommen sofort an, es werden keine unnötigen Anfragen gesendet; die Verwaltung ist relativ bequem.
Nachteile: Die Aufrechterhaltung einer langen Verbindung auf dem Server erhöht den Overhead.
Beispiel: Gmail-Chat
<script type="text/javascript"> $(function () { (function iframePolling() { var url = "${pageContext.request.contextPath}/communication/user/ajax.mvc?timed=" + new Date().getTime(); var $iframe = $('<iframe id="frame" name="polling" style="display: none;" src="' + url + '"></iframe>'); $("body").append($iframe); $iframe.load(function () { $("#logs").append("[data: " + $($iframe.get(0).contentDocument).find("body").text() + " ]<br/>"); $iframe.remove(); // 递归 iframePolling(); }); })(); });</script>
2) HTTP Long Polling (HTTP Long Polling)
In diesem Fall sendet der Client eine Nachricht an den Server Der Client stellt eine Anfrage und öffnet eine Verbindung. Diese Verbindung wird erst geschlossen, nachdem Daten vom Server empfangen wurden. Nachdem der Server die Daten gesendet hat, schließt er die Verbindung sofort. Der Client öffnet sofort eine neue Verbindung und wartet auf die nächsten Daten. (Wenn Sie mehr erfahren möchten, besuchen Sie die Spalte AJAX-Entwicklungshandbuch der PHP-Website für Chinesisch, um mehr zu erfahren)
Vorteile: Es wird keine häufigen Anfragen geben, wenn keine Nachricht vorliegt, und das wird auch der Fall sein verbrauchen weniger Ressourcen.
Nachteile: Die vom Server gehaltene Verbindung verbraucht Ressourcen, die Reihenfolge der zurückgegebenen Daten ist nicht garantiert und die Verwaltung und Wartung ist schwierig.
Beispiele: WebQQ, Hi-Webversion, Facebook IM.
<script type="text/javascript"> $(function () { (function longPolling() { $.ajax({ url: "${pageContext.request.contextPath}/communication/user/ajax.mvc", data: {"timed": new Date().getTime()}, dataType: "text", timeout: 5000, error: function (XMLHttpRequest, textStatus, errorThrown) { $("#state").append("[state: " + textStatus + ", error: " + errorThrown + " ]<br/>"); if (textStatus == "timeout") { // 请求超时 longPolling(); // 递归调用 // 其他错误,如网络错误等 } else { longPolling(); } }, success: function (data, textStatus) { $("#state").append("[state: " + textStatus + ", data: { " + data + "} ]<br/>"); if (textStatus == "success") { // 请求成功 longPolling(); } } }); })(); }); </script>
Dieser Artikel endet hier (wenn Sie mehr sehen möchten, besuchen Sie die Rubrik AJAX-Benutzerhandbuch auf der PHP-Chinese-Website, um mehr zu erfahren). unten.
Das obige ist der detaillierte Inhalt vonWas ist Reverse-Ajax? Wie implementiert man Reverse-Ajax? (ausgewählte Version). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!