Tôi đã nhận thấy rằng một số trang web nặng của tôi (những trang tôi truy cập, không phải trang web tôi đã tạo), có một số tính năng tự động làm mới nhất định. Ví dụ: trong Gmail, nếu tôi nhận được thư mới, tôi thấy thông báo mới mà không cần tải lại trang. Nó giống với ứng dụng khách IM trên trình duyệt Facebook. Từ những gì tôi có thể nói, không có bất kỳ applet java xử lý ràng buộc trình duyệt máy chủ, vì vậy tôi còn lại để cho rằng nó đang được thực hiện bởi AJAX và có lẽ một số yếu tố tôi không biết. Vì vậy, bằng đoán tốt nhất của tôi, nó được thực hiện theo một trong hai cách sau:Reverse AJAX? Các thay đổi dữ liệu có thể được 'PUSHED' thành tập lệnh không?
Các javascript hiện một "ping" ổn định để một server-side script, kiểm tra đối với bất kỳ bản cập nhật mà có thể có sẵn (mà có thể giải thích tại sao một số của các trang này mang lại bất kỳ trang nhiệm vụ nặng nào khác để thu thập dữ liệu). hoặc
javascript ngồi không đúng và tập lệnh phía máy chủ thực sự "Đẩy" mọi bản cập nhật lên trình duyệt. Nhưng tôi không chắc chắn nếu điều này là có thể. Tôi muốn tưởng tượng có một số loại chức năng AJAX vẫn ping, nhưng tất cả nó chỉ đơn giản là yêu cầu "bất kỳ bản cập nhật?" và máy chủ-kịch bản có một boolean đơn giản mà nói "nope" hoặc "Tôi vui vì bạn đã hỏi." Nhưng nếu trường hợp này xảy ra, bất kỳ thay đổi dữ liệu nào cũng sẽ cần gọi trực tiếp kịch bản để nó có các thay đổi dữ liệu đã sẵn sàng và thực hiện thay đổi đối với hàm boolean đó.
Vì vậy, có thể/khả thi/cách hoạt động? Tôi tưởng tượng một cái gì đó như:
Ai đó gửi email/IM/DB cập nhật lên máy chủ, máy chủ gọi tập lệnh bằng URL của tập lệnh và một số biến GET có liên quan, tập lệnh ghi lại thay đổi và cập nhật biến "cập nhật khả dụng" , AJAX nhận được phản hồi rằng có trong bản cập nhật thực tế, AJAX chạy các chức năng "trang cập nhật" bình thường, thực thi các kịch bản cập nhật bình thường và xuất chúng ra trình duyệt.
Tôi hỏi vì dường như thực sự không hiệu quả khi js chỉ thực hiện kiểm tra liên tục yêu cầu a) máy chủ hoạt động sau 1,5 giây và b) trình duyệt của tôi hoạt động sau 1,5 giây chỉ để kết thúc Tôi có thể nói "Oh boy, tôi có một IM! Giống như một khách hàng IM thực sự!"
Chà, tôi thậm chí còn sử dụng cùng một cụm từ. điều đó gần như lúng túng.Nhưng tìm kiếm ban đầu của tôi về cách thực hiện điều này trong PHP đề cập đến các tập lệnh lặp vô hạn. Có một vòng lặp vô hạn phải diễn ra ở đâu đó dọc theo dòng cho loại điều này để làm việc? Tại sao không thể thay đổi nguồn dữ liệu thực tế (máy chủ IMAP, DB, tệp txt, bất kỳ thứ gì) kích hoạt tập lệnh để đánh thức và xử lý mọi thứ? – Anthony