Short polling và Long polling

Đăng bởi Lưu Đại vào ngày 10-10-2023
Short polling:
1. Client gửi request lên server
2. Server xử lý request tạo một background job và gửi trả job id về cho client
3. Client cứ định kì 1 khoảng thời gian gọi api để kiểm tra trạng thái của background job (hoặc call api tiếp ngay khi nhận được response của api liền kề trước đó mà trạng thái là đang chạy).
4. Server gửi trả về trạng thái của background job nếu mà chưa hoàn thành thì gửi trạng thái chưa hoàn thành nếu đã hoàn thành thì gửi trạng thái hoàn thành kèm dữ liệu về cho client.

Long polling:
1. Giống Short polling 
2. Giống Short polling 
3. Client sau khi gọi api để kiểm tra trạng thái của background job
4. Server không trả lời ngay mà giữ kết nối cứ định kì x giây (x tiểu học) sẽ hỏi thăm redis 1 lần xem background job đã hoàn thành chưa.
- Trường hợp job chưa hoàn thành mà quá thời gian giữ kết nối (thời gian này do mình thiết lập và phải làm sao <= thời gian request timeout) thì gửi lại trạng thái chưa hoàn thành cho client và client sẽ lặp lại từ bước 4 
- Trường hợp job đã hoàn thành trước khoảng thời gian giữ kết nối thì gửi lại kết quả về cho client. 

Short polling trong thời gian dài sẽ gọi request lên server nhiều tốn resource server
Cả short polling và long polling đều dùng http để giao tiếp