n
Mn cho mình hỏi vấn đề về http và chunked encoding.
Mình đang làm 1 proxy server. Lúc nhận 1 header response từ web server về có trường encoding: chunked, nghĩa là web server sẽ trả về dữ liệu theo từng gói với kích thước max (trong code mình để là 1460 bytes). Và việc nhận body theo kiểu này sẽ dừng khi nào gói tin nhận được có kích thước nhỏ hơn max (1460 bytes).
Nhưng chỉ lúc mạng mạnh, vào buổi sáng, mình test code mình chạy oke khi có thể nhận body từ web server theo đúng lý thuyết trên và dừng lại khi nhận được gói cuối có kích thước nhỏ hơn max 1460 bytes; nhưng mạng vào lúc chiều tối như bây giờ thì có thể gói tin có kích thước nhỏ hơn 1460 lại được trả về sớm hơn dự kiến (mình nghĩ là do server hay đường truyền), ngay tại đó mình ngắt kết nối với browser từ máy khách và dữ liệu gửi về bị thiếu dẫn đến trang web hiển thị sai.
Vậy cho mình xin giải pháp để xử lý tình huống nhận các gói dữ liệu theo kiểu chunked stream, khi nào thì nên dừng lại đúng lúc. Mình đã tham khảo trên wiki có nói về việc chuỗi các gói này sẽ kết thúc bằng 1 gói với size=0 và mình đã làm theo nhưng đến lúc nhận gói size=0 thì chả thấy server phản hồi nên chương trình mình cứ đứng chờ hoài. Hay là mình sai chỗ nào.
Mong mn giúp đỡ. Thank mn.
Hình 1 là lúc load được, hình 2 là lúc gói tin nhỏ hơn max size xuất hiện sớm làm gián đoạn dữ liệu.