Привет, opennet!
У меня есть веб-страница, которая меняется обычно раз в 20 минут.
Сейчас, я смотрю - как давно она редактировалась, прикидываю секунды до следующего изменения и отдаю (с небольшим запасом) 'Refresh' HTTP header. Все довольны.
Но вот беда - иногда люди допускают ошибки. И эта самая страница с ошибкой уходит клиентам, а отозвать её уже ни как нельзя. Ошибку заметили спустя минуту, а клиенты обновятся только через 20.
Меня просят сделать так, чтобы клиенты всегда видели текущую версию. Поиск подсказал:
MIME Mixed-Replace
XMLHttpRequest
WebSocket
'Refresh: 1' HTTP header + 204 No ContentЯ теряюсь и не знаю что предпочесть, всё было так просто и работало даже без JavaScript`а, а теперь нагромождение технологий. Подскажите оптимальное решение.
Более подробно о том, что я делаю:
Люди собираются на мероприятие. У всех свои телефоны или ноутбуки. Связь какая угодно: Wi-Fi, GPRS, Спутник. Они открывают сайт и руководствуются информацией на экране.
Следовательно работать должно на любом устройстве и при любом способе подключения к сети. Желательно, не расходовать лишнего трафика. Обновление фрагмента страницы не нужно, она и так маленькая и состоит из текста.
>[оверквотинг удален]
> Я теряюсь и не знаю что предпочесть, всё было так просто и
> работало даже без JavaScript`а, а теперь нагромождение технологий. Подскажите оптимальное
> решение.
> Более подробно о том, что я делаю:
> Люди собираются на мероприятие. У всех свои телефоны или ноутбуки. Связь какая
> угодно: Wi-Fi, GPRS, Спутник. Они открывают сайт и руководствуются информацией на
> экране.
> Следовательно работать должно на любом устройстве и при любом способе подключения к
> сети. Желательно, не расходовать лишнего трафика. Обновление фрагмента страницы не нужно,
> она и так маленькая и состоит из текста.почему бы не мониторить изменения на сервере. Посылать асинхронные запросы из клиента каждые 10-20 сек. При обнаружении изменений обновлять страницу всем.
Чем продиктован выбор интервала в 20мин. для обновлений?
> почему бы не мониторить изменения на сервере.На сервере известно об изменениях. Нужно сообщить клиентам.
>Посылать асинхронные запросы из клиента каждые 10-20 сек. При обнаружении изменений обновлять страницу всем.
Вы рекомендуете XMLHttpRequest? Да, эта технология поддерживается многими современными мобильными браузерами. Но не будет ли излишнего трафика? И ещё, я не специалист, но мне казалось, что многие устройства отключают интернет при бездействии. Это как-то влияет?
Ещё у меня была идея держать открытое TCP соединение. Принять HTTP запрос, а с ответом подождать. Нагрузка на TCP/IP стек сервера возрастёт, но клиентов не много, все проходят личную регистрацию. Сервер выдержит, но не думаю, что это хорошо работает с мобильным интернетом.
> Чем продиктован выбор интервала в 20мин. для обновлений?
Регламентом мероприятия. Фактическим обновлением задания для людей.