Ban đầu, những áp dụng website được cách tân và phát triển bao phủ mô hình clinet/hệ thống, chỗ cơ mà web client luôn luôn đề nghị là bên ban đầu cho các transactions. Do kia không tồn tại phép tắc mang lại sever gửi một những dữ liệu hay sự kiện mang lại client mà ko đề xuất client bắt đầu với cùng một request. Để hạn chế câu hỏi này, bạn ta trở nên tân tiến những cách tiến hành tiếp xúc HTTP.. khác như webSocket, long-polling, JSONP. polling, Piggyback polling, comet streaming, comet long-polling....

Bạn đang xem: Polling là gì

Bạn đã xem: Polling là gì

1. HTTPhường. polling

Polling bao hàm vấn đề gửi một thông điệp từ phía lắp thêm khách mang đến sever nhằm thưởng thức một đọc tin tài liệu nào đó. Thực ra trên đây chỉ là một trong hưởng thụ HTTP. của Ajax. Để giành được các sự kiện từ bỏ máy chủ càng nhanh thì khoảng thời gian polling (thời hạn giữa các yêu thương cầu) nên càng ngắn càng giỏi.

Có một điểm yếu là: nếu khoảng thời hạn này càng ngắn thêm, trình chăm bẵm của dòng sản phẩm khách hàng vẫn đưa ra nhiều những hiểu biết rộng, trong đó bao gồm thử dùng sẽ không trả về ngẫu nhiên tài liệu có lợi làm sao làm cho đường truyền bị hao tốn cùng cách xử lý tài ngulặng bất lợi.

Xem thêm: Nhóm Đa Chức Năng ( Cross Functional Team Là Gì, Hiểu Thế Nào Cho Đúng Về Cross

Bảng thời hạn cho biết biện pháp cơ mà thứ khách gửi các hưởng thụ polling tuy vậy chẳng tất cả biết tin nào được trả về cả. Máy khách hàng đề nghị hóng mang lại lần polling tiếp theo sau để có được nhì sự kiện vì chưng máy chủ thu nhận ra.

2. HTTP.. long-polling


*

2. Demo

rails new chat_thử nghiệm rails g Model Message name:string content:string rails g controller messages rails db:create db:migrateServer:model message.rb

scope :after_messages, ->message_id vì where("id > ?", message_id) if Message.find_by(id: message_id) || message_id == 0 endmessages_controller.rbTa tạo ra cách thức tra cứu các tin nhắn bắt đầu mà client không được cập nhậtbên cạnh đó giữ giàng request tự client và trả về Khi có tn mới.tùy thuộc vào setting timeout của request nhưng mà ta quyết định thời gian lưu lại request mang đến tương xứng.

private def check_new_messages 10.times vày new_messages.any? sleep 5 kết thúc nil endindex trả về toàn bộ những tin nhắn khi request html và chỉ trả về

def index messages&.lastvà.id || 0 endclient:

Phương thức thêm vào lời nhắn mới:

function appendMessages(messages, last_id) $(".message-content").append(messages); $("input").val(last_id); scrollToNewestMessage();Đưa tkhô nóng cuộn mang đến địa chỉ bên dưới cùngfunction scrollToNewestMessage() $(".message-content").animate( scrollTop: $(".message-content").scrollHeight , 1000);Phương thơm thức request thêm lời nhắn từ hệ thống. bọn họ đã lặp lich để tiếp tục gửi lại request lên VPS mỗi khi nhận được respones trường đoản cú hệ thống. Mình mang lại lặp lại cả khi gồm lỗi xuất hiện thêm.function requestNewestMessages() setTimeout(function() $.ajax( type: "GET", url: $("#message-form").attr("action"), data: "last_id=" + $("input").val(), dataType: "script", success: function(data) requestNewestMessages(); , error: function(error_message) requestNewestMessages(); ); , 3000); Một vận dụng chat tất yếu đề nghị nhiều thao tác với trau xanh chuốt hơn thế nữa, cơ mà như thế là cơ bản chúng ta đã hình thành các bước bao gồm.Demo: https://github.com/phantien133/chat_demo

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *