2012-12-29 37 views
5

Tôi đã làm một ajax đơn giản ...Xmlhttprequest có giữ kết nối mở sau khi yêu cầu đã được xử lý không?

Các yêu cầu và đáp ứng tiêu đề cả hai đều chứa các kết nối: Keep-Alive

tôi goggle một chút và thấy rằng khách hàng do đó duy trì một kết nối liên tục với máy chủ. Điều này hỗ trợ pipelining, nơi mà khách hàng có thể gửi nhiều yêu cầu mà không cần chờ đợi cho mỗi phản ứng.

vậy, tôi có một số câu hỏi sau:

  1. Trường hợp không XMLHttpRequest thực sự mở kết nối tới máy chủ?
  2. Tạo nhiều đối tượng xmlhttprequest mở kết nối của riêng nó hoặc nó gửi nó trên cùng một kết nối bằng pipelining ...?
  3. Tôi muốn xử lý yêu cầu đồng thời .. Tôi có thể xếp hàng yêu cầu (thông số lưu trữ) ..và trong hàm onreadystate cung cấp chức năng để xử lý nó ... tức là gọi hàm thực hiện yêu cầu đệ quy? hoặc đó không phải là một ý tưởng hay?
  4. Khi nào thì kết nối đã đóng..vào giai đoạn nào?

thông tin khác: Tôi không muốn sử dụng jquery hoặc bất kỳ librarie khác cho ajax.You có thể đề xuất mặc dù. i có thể kiểm tra cách chúng hoạt động. Tôi đang sử dụng javascrip và php (khung soạn thảo mã). Tôi muốn có thể xử lý nhiều yêu cầu (2) .. và yêu cầu hàng đợi là được thực hiện khi đạt đến giới hạn.

Cảm ơn trước :)

+0

bạn có hiểu rằng các yêu cầu http được thực hiện bằng cách sử dụng kết nối 'tcp' không? http sử dụng tcp như fax sử dụng đường dây điện thoại.'tcp connection' là những gì đang được nhắc đến trong' Connection: Keep-Alive'. Bạn không thực sự biết khi nào hoặc ở đâu trình duyệt quyết định tạo một kết nối TCP, nhưng nói chung các trình duyệt sẽ tạo ra nhiều kết nối tcp đồng thời tới một máy chủ nếu nó có lợi. yêu cầu cho html, hình ảnh, css, ajax yêu cầu vv ... tất cả đi qua cùng một dòng (mặc dù một lần nữa, trình duyệt nói chung sẽ mở nhiều dòng). – goat

+0

Cảm ơn bạn đã trả lời. Yups tôi biết nó diễn ra qua kết nối Tcp. Cảm ơn bạn đã làm rõ về Connection: Keep-Alive. Tôi đã đọc rằng tiêu chuẩn là 2 kết nối đồng thời, mặc dù một số trình duyệt hỗ trợ nhiều hơn. –

Trả lời

3

XMLHttpRequest là một đối tượng cho phép bạn yêu cầu và nhận dữ liệu từ máy chủ mà không làm mới trang. Nó sử dụng các yêu cầu HTTP hoặc HTTPS. Về cơ bản nó giống như yêu cầu và nhận một trang HTML. Bạn có thể mở chúng đồng bộ hoặc không đồng bộ.

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

Ở đây, MethodHTTP phương thức yêu cầu để sử dụng. Xem http://www.w3.org/TR/XMLHttpRequest/#the-open()-method

Tôi muốn để xử lý yêu cầu đồng thời .. Tôi có thể hàng đợi (thông số cửa hàng) yêu cầu ..và trong onreadystate cung cấp chức năng để xử lý nó .. ví dụ: gọi hàm đó thực hiện yêu cầu đệ quy? hoặc đó không phải là một ý tưởng hay?

Tôi muốn tạo một mảng XMLHttpRequests và xử lý dữ liệu và xóa XMLHttpRequest khỏi mảng onreadystatechange. Hãy nhớ rằng bạn sẽ nhận được một thứ tự hỗn hợp các phản hồi không đồng bộ hoặc có thể không nhận được phản hồi nào cả.

Khi nào kết nối đóng cửa..vào giai đoạn nào?

Nó đóng ngay sau khi nhận được dữ liệu. Lưu ý rằng keep-alive là về việc duy trì phiên hoạt động, không phải kết nối.

+1

Tại sao tôi bị bỏ phiếu? – Ertug

+0

Không phải bởi tôi. Cảm ơn vi đa trả lơi. Tôi sẽ kiểm tra thêm về nó. –

+0

Alan, bạn được chào đón. Tôi chỉ tò mò vì nếu có gì sai trong câu trả lời của tôi, tôi không muốn đánh lừa bất cứ ai với nó và tôi muốn học từ sai lầm của tôi. – Ertug

Các vấn đề liên quan