Предыстория
Я использую сервер, похожий на Tornado, с поддержкой длинных опросов. Каждая новая веб-страница, на которую заходит пользователь, создает длинный опрос на сервере, например:
$.ajax({
type: 'GET',
url: "/mylongpollurl/",
dataType: 'application/json',
success: function(json) {
// I do stuff here
},
error: function(xhr, errText, ex) {
// If timeout I send a new long-poll request
}
});
Проблема
Теперь я буду полагаться на данные, которые я получаю от Fiddler, отслеживая все запросы, сделанные из моего браузера (на данный момент FF).
- Загружается страница 1 и выполняется длинный запрос на опрос, который теперь простаивает на стороне сервера.
- Я щелкаю ссылку на страницу 2, и эта страница загружается и настраивает длинный запрос на опрос, НО длинный запрос на опрос со страницы 1 все еще простаивает на стороне сервера (согласно Fiddler).
Это означает, что я буду складывать все длинные вызовы опроса при щелчке по странице, в результате чего на сервере будет много активных подключений (или, может быть, они используют совместное подключение?)
Мои мысли
. Поскольку это сервер, похожий на Tornado (использующий epoll), он может обрабатывать довольно много соединений. Но этот факт не стоит использовать на мой взгляд. Я имею в виду, что я предпочитаю не иметь тайм-аута на сервере для этого случая (когда клиент исчезает).
- Я знаю, что эти автономные страницы лучше используют общий заголовок и обмениваются контентом только через вызовы ajax, но этот дизайн мы используем сегодня, был не мой вызов...
- Лучшим способом решить эту проблему, вероятно, было бы повторное использование соединения (я думаю, трудно осуществить) или закрытие, как только браузер покидает страницу (вы нажимаете, чтобы другая страница).
Спасибо
-- MyGGaN