Tôi đang phát xung quanh một chút với XmlHttpRequestObjects thô + Comet Long Polling. (. Thông thường, tôi muốn chúng ta hãy GWT này hay cách khác xử lý khuôn khổ này đối với tôi, nhưng tôi muốn tìm hiểu thêm về nó)Sao chổi (bỏ phiếu dài) và trạng thái XmlHttpRequest
tôi đã viết đoạn mã sau:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
tôi quấn longPoll()
cuộc gọi trong một câu lệnh if kiểm tra status > 0
, bởi vì tôi gặp phải, khi tôi rời khỏi trang (bằng cách duyệt một nơi khác hoặc bằng cách tải lại nó), một cuộc gọi sao chổi không cần thiết cuối cùng sẽ được gửi. [Và trên Firefox, nó thậm chí còn gây ra vấn đề nghiêm trọng khi thực hiện tải lại trang, vì một lý do tôi không hoàn toàn hiểu được nêu ra.]
Câu hỏi: Có phải đó làstatus
kiểm tra cách chính xác để xử lý vấn đề này, hoặc là có một giải pháp tốt hơn?
Bạn không thể chỉ cần nhìn vào bất kỳ thực hiện hiện tại, ví dụ GWT như bạn đã đề cập, jquery, vv? – fig
@ fig-gnuton: Tôi không chắc chắn, nếu nó thực sự dễ dàng để làm theo mã javascript được tạo ra (tôi không phải là một guru javascript ...) –
Nếu bạn biết đủ để có thể chơi với XHR thô, bạn sẽ không có vấn đề khi nhìn vào Jquery hoặc các libs khác. Họ có các phiên bản nguồn được nhận xét đầy đủ. – fig