2009-07-28 24 views
5

Tôi đang viết một phòng chat trực tuyến dựa trên AJAX/COMET. Thiết kế của tôi là:Hành vi hết thời gian của các trình duyệt khác nhau?

Yêu cầu

----------------- wait ------------------- ------> gửi dữ liệu kết xuất

----------------- chờ đợi ------------------ -------> gửi dữ liệu kết xuất

----------------- chờ đợi ----------------- --------> gửi dữ liệu kết xuất

----------------- chờ đợi ---------------- ---------> gửi dữ liệu kết xuất

----------------- chờ -------------------------> gửi dữ liệu kết xuất

------ đã xảy ra sự cố, nhận phản hồi.

Một yêu cầu ..... ....

Như bạn thấy, máy chủ giữ yêu cầu và chờ đợi một cái gì đó đã xảy ra, nếu có một số sự kiện đã xảy ra, chỉ cần đẩy dữ liệu và yêu cầu kết thúc. Sau đó, khách hàng sẽ sử dụng một yêu cầu khác. Có đánh dấu trong yêu cầu, vì vậy nếu có sự kiện xảy ra khoảng cách giữa hai yêu cầu, máy chủ biết rằng có sự kiện đang chờ xử lý cho khách hàng.

Trước khi hết giờ trình duyệt, máy chủ cũng gửi một số dữ liệu không cần thiết để ngăn máy khách thoát khỏi thời gian chờ.

Bây giờ, ở đây có vấn đề: hành vi thời gian chờ của các trình duyệt khác nhau là gì? Tôi biết rằng trình duyệt gửi yêu cầu và chờ dữ liệu, nếu mất quá nhiều thời gian chờ đợi, trình duyệt sẽ hết thời gian chờ. Nhưng những hành vi thời gian chờ của các trình duyệt khác nhau là gì? Và có bất kỳ tiêu đề nào có thể kiểm soát hành vi thời gian chờ của trình duyệt không? Bằng cách biết hành vi thời gian chờ của trình duyệt, để tôi có thể quyết định cách xử lý chúng. Tôi có thể tìm thấy những dữ liệu đó ở đâu?

+0

Nhìn vào câu trả lời này http://stackoverflow.com/a/1343963/779408 – breceivemail

Trả lời

9

Thực tế, vì khách hàng có thể thực hiện proxy, giá trị rõ ràng của thời gian chờ cho các trình duyệt khác nhau không có ý nghĩa nhiều như bạn nghĩ.

Thay vào đó, tôi muốn hỏi lý do bạn hỏi - bạn sẽ phải xử lý hết thời gian chờ và không có lượng phát trực tiếp nào tới trình duyệt sẽ ngăn nó mỗi lần. Vì vậy, tốt nhất là chỉ cần requery máy chủ từ máy khách khi kết nối bị ngắt - đó là một lý do khiến rất nhiều người khuyên bạn nên bỏ phiếu dài, đó là những gì bạn đang cố gắng làm. Bất kể bạn chọn giải pháp truyền trực tuyến hay cuộc thăm dò ý kiến ​​dài, bạn phải cho phép đặt lại kết nối.

Đối với thiết lập khách mời iframe ẩn đơn giản, it's not too hard to do - và nó cũng dễ dàng cho các yêu cầu XHR, tùy thuộc vào khung bên khách hàng bạn đang sử dụng.

Thời gian chờ cho hầu hết các trình duyệt hiện đại có vẻ là rather large trong IE (60 phút? Wow) và ngắn hơn trong FF (about: config nói 300 giây - eek) - nhưng như tôi đã nói, điều đó không giúp bạn chống lại một proxy, trong đó thời gian chờ có thể ngắn tới 2 phút hoặc ít hơn, tùy thuộc vào cách quản trị viên proxy định cấu hình nó.

Vì vậy, trong tóm tắt - thời gian chờ xảy ra. Bạn không thể ngăn họ lại. Mã máy khách của bạn kết nối lại khi chúng xảy ra (với giới hạn để ngăn chặn sự quay vòng trên máy chủ), và đừng lo lắng thêm về nó. Bên cạnh đó mạnh mẽ hơn, nó cũng có thể làm cho mã của bạn hoạt động hiệu quả hơn, vì bạn sẽ không định kỳ bơm dữ liệu vô ích cho mọi khách hàng.

Các vấn đề liên quan