Does xmlhttprequest keep connection open after request has been processed? - 小众知识

Does xmlhttprequest keep connection open after request has been processed?

2022-07-13 07:31:51 苏内容
  标签: xml
阅读:2306

I have done a simple ajax...

The request and response header both contain the Connection: Keep-Alive

I goggle a bit and saw that the client thus maintain a persistent connection with the server. This support pipelining, where client may send multiple request without waiting for each response.

So i have some questions:

  1. Where does the xmlhttprequest actually open a connection to the server?
  2. Does creating many xmlhttprequest object open their own connect or it send it on a same connection using pipelining...?
  3. I want to handle simultaneous request.. Can i queue the request(store parameters) ..and in the onreadystate provide function to handle it.. i.e. calling the function that make request recursively? or it's not a good idea at all?
  4. When is the connection closed..at what stage?

Other info: I don't want to use jquery or any other librarie for the ajax.You can propose though. i can check how they work. I'm using javascrip and php(codeigniter framework). I want to be able to handle multiple request(2)..and queue request that are made when the limit has been reached.



do you understand that http requests are accomplished by using a tcp connection? http uses tcp like a fax uses a phone line. tcp connection is what is being referred to in Connection: Keep-Alive. You don't really know when or where the browser decides to create a tcp connection, but generally browsers will create multiple simultaneous tcp connections to a server if it would be beneficial. requests for html, images, css, ajax requests etc... all go over the same lines(although again, the browser will generally open multiple lines). 


XMLHttpRequest is an object which let you to request and receive data from server without refreshing the page. It uses HTTP or HTTPS requests. It is basically same as requesting and receiving an HTML page. You may open them synchronous or asynchronous.

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

Here, Method is HTTP request method to use. See http://www.w3.org/TR/XMLHttpRequest/#the-open()-method

I want to handle simultaneous request.. Can i queue the request(store parameters) ..and in the onreadystate provide function to handle it.. i.e. calling the function that make request recursively? or it's not a good idea at all?

I'd make an array of XMLHttpRequests and handle data and remove XMLHttpRequest from array onreadystatechange. Keep in mind that you will receive a mixed order of asynchronous responses or may not receive a response at all.

When is the connection closed..at what stage?

It is closed right after data is received. Note that keep-alive is about keeping the session alive, not the connection.



扩展阅读
相关阅读
© CopyRight 2010-2021, PREDREAM.ORG, Inc.All Rights Reserved. 京ICP备13045924号-1