Тайм-аут поведение различных браузеров?


Я пишу онлайн-чат на основе AJAX / COMET. Мой дизайн:

Запрос

----------------- подожди -------------------------> отправить данные дампа

----------------- подожди -------------------------> отправить данные дампа

----------------- подожди -------------------------> отправить данные дампа

----------------- подожди -------------------------> отправить данные дампа

----------------- подожди -------------------------> отправить данные дампа

------ что-то случилось, получите ответ.

Еще один запрос ..... ....

Как вы видите, сервер держит запрос и ждет, что что-то произошло, если произошло какое-то событие, просто нажмите данные и завершите запрос. Затем клиент использует другой запрос. В запросе есть ТИК, поэтому если между двумя запросами произошло событие, то сервер знает, что для клиента есть ожидающее событие.

Перед таймаутом браузера сервер также отправляет некоторые данные простоя, чтобы предотвратить клиент от ожидания.

Теперь возникает проблема: каково поведение таймаута различных браузеров? Я знаю, что браузер отправляет запрос и ждет данных,если это займет слишком много времени, чтобы ждать, он будет таймаут. Но что это за таймаутное поведение различных браузеров? И есть ли заголовок, который может контролировать поведение таймаута браузера? Зная тайм-аут поведения браузеров, так что я могу решить, как с ними бороться. Где я могу найти эти данные?

1 5

1 ответ:

На самом деле, поскольку клиент может проходить через прокси, явные значения таймаутов для разных браузеров не так много значат, как вы думаете.

Скорее, я бы спросил, почему вы спрашиваете - вам придется иметь дело с тайм-аутами, и никакое количество потоковой передачи в браузер не будет препятствовать этому каждый раз. Поэтому было бы лучше просто запросить сервер у клиента, когда соединение прерывается - что является одной из причин, почему многие люди рекомендуют длинный опрос, который и является тем, что ты, кажется, пытаешься это сделать. Независимо от того, выбираете ли вы потоковое решение или длинный опрос, вы должны разрешить сброс соединения.

Для простой скрытой настройки клиента iframe, это не слишком сложно сделать - и это одинаково легко для запросов XHR, в зависимости от того, какую клиентскую платформу вы используете.

Таймаут для большинства современных браузеров кажется довольно большим в IE (60 минут? Вау), и короче в FF (о: config говорит 300 секунд-eek) - но как я сказал, что это не поможет вам против прокси, где тайм-аут может быть всего 2 минуты или меньше, в зависимости от того, как администратор прокси настроил его.

Итак, вкратце-таймауты случаются. Вы не можете остановить их. Запрограммируйте ваш клиент на повторное подключение, когда это произойдет (с ограничением, чтобы предотвратить спин на сервере вниз), и не беспокойтесь об этом дальше. Кроме того, что он более надежен, он, вероятно, также сделает ваш код более производительным, так как вы не будете периодически перекачивать бесполезные данные в каждый клиент.