2012-12-29 11 views
5

Ich habe eine einfache Ajax getan ...Hält xmlhttprequest die Verbindung offen, nachdem die Anfrage verarbeitet wurde?

Die Anfrage und Antwort-Header sowohl die Verbindung enthalten: Keep-Alive

ich glotze ein wenig und sah, dass der Kunde somit eine ständige Verbindung mit dem Server aufrechtzuerhalten. Dies unterstützt das Pipelining, wobei der Client mehrere Anfragen senden kann, ohne auf jede Antwort zu warten.

So habe ich einige Fragen:

  1. Woher kommt der xmlhttprequest tatsächlich eine Verbindung zum Server öffnen?
  2. Öffnet das Erstellen von vielen xmlhttprequest-Objekt ihre eigene Verbindung oder sendet es auf dieselbe Verbindung mit Pipelining ...?
  3. Ich möchte gleichzeitige Anfrage behandeln .. Kann ich die Anfrage (speichern Parameter) .. .. und in der onreadystate bieten Funktion, um damit umzugehen. D. H. Aufruf der Funktion, die Anfrage rekursiv machen? oder es ist überhaupt keine gute Idee?
  4. Wann ist die Verbindung geschlossen? In welcher Phase?

Weitere Informationen: obwohl Ich will nicht jquery oder andere librarie für die ajax.You vorschlagen können. i kann überprüfen, wie sie funktionieren. Ich benutze javascrip und php (codeigniter framework). Ich möchte in der Lage sein, mehrere Anfrage (2) .. und Warteschlange Anfrage, die sind, wenn das Limit erreicht wurde.

Vielen Dank im Voraus :)

+0

Verstehst du, dass HTTP-Anfragen mit einer 'tcp-Verbindung 'durchgeführt werden? http benutzt tcp wie ein Fax benutzt eine Telefonleitung.'tcp connection' wird in' Connection: Keep-Alive' bezeichnet. Sie wissen nicht wirklich, wann oder wo der Browser eine TCP-Verbindung erstellt, aber im Allgemeinen erstellen Browser mehrere gleichzeitige TCP-Verbindungen zu einem Server, wenn dies von Vorteil wäre. Anfragen für HTML, Bilder, CSS, AJAX-Anfragen etc ... gehen alle über die gleichen Zeilen (obwohl wieder der Browser wird in der Regel mehrere Zeilen öffnen). – goat

+0

Danke für die Antwort. Yups ich weiß, dass es über die Tcp Verbindung stattfindet. Danke für die Klärung der Connection: Keep-Alive. Ich habe gelesen, dass der Standard 2 gleichzeitige Verbindungen ist, obwohl einige Browser mehr unterstützen. –

Antwort

3

XMLHttpRequest ist ein Objekt, das Sie lassen Daten vom Server anfordern und zu empfangen, ohne die Seite zu aktualisieren. Es verwendet HTTP oder HTTPS Anfragen. Es ist im Grunde dasselbe wie das Anfordern und Empfangen einer HTML-Seite. Sie können sie synchron oder asynchron öffnen.

XMLHttpRequest.open(Method, URL, Asynchronous, UserName, Password) 

Hier Method ist HTTP Anforderungsmethode zu verwenden. Siehe http://www.w3.org/TR/XMLHttpRequest/#the-open()-method

ich gleichzeitige Anfrage bearbeiten wollen .. Kann ich die Anfrage (Speicher-Parameter) Warteschlange ..und in der onreadystate bieten Funktion, es zu handhaben .. das heißt die Funktion aufrufen, die Anforderung rekursiv zu machen? oder es ist überhaupt keine gute Idee?

Ich würde ein Array von XMLHttpRequests machen und Daten behandeln und XMLHttpRequest von Array entfernen. Beachten Sie, dass Sie eine gemischte Reihenfolge der asynchronen Antworten erhalten oder überhaupt keine Antwort erhalten.

Wann ist die Verbindung geschlossen..auf welcher Stufe?

Es ist geschlossen, nachdem die Daten empfangen wurden. Beachten Sie, dass es bei keep-alive darum geht, die Sitzung am Leben zu erhalten, nicht die Verbindung.

+1

Warum werde ich abgelehnt? – Ertug

+0

Nicht von mir. Danke für die Antwort. Ich werde mehr darüber prüfen. –

+0

Alan, du bist willkommen. Ich bin nur neugierig, denn wenn etwas falsch in meiner Antwort ist, möchte ich niemanden damit in die Irre führen, und ich würde gerne von meinem Fehler lernen. – Ertug

Verwandte Themen