Доброго времени суток, коллеги и другие хабровчане!
Вот возникла у меня задача, которую я решал лет 5 назад. В наше время решение этой задачи находится почти повсюду, весь Интернет пронизан этой используемой технологией как далёкая-далёкая галактика Силой.
Речь идет об AJAX.
Так вот, 5 лет назад стояла у меня задача динамической загрузки данных (для чата). Разумеется я использовал AJAX. Каждые 5 секунд серверу посылался запрос, в ответ выдавался XML либо удобный для парсера средствами JS текстовый документ (не JSON, я тогда и не слыхивал о нем).
Прошло время, и мне кажется что-то в этой области претерпело эволюцию как минимум (ну например, что-нибудь сделали в плане снижения загрузки на сервер кроме как просто наращивания мощностей сервера и расширения канала).
Подскажите мне, уважаемые Веб-разработчики в теме, каким образом сейчас реализуется динамическая подгрузка данных с сервера? Также по таймауту? Хороший пример реализации, да-да, всеми «любимый» ВК.
ps: в работе использую jQuery. Что будет загружаться: XML, JSON(P) либо целый кусок html (частичное представление) — не важно.
pps: подкиньте идей, js-код ВК посмотреть конечно могу, но вдруг он весь обфусцированный
В данный момент, есть более новые технологи, например: websocket и Long polling.
Websocket однозначно будет работать быстрее и как по мне даже интереснее чем простой ajax с таймаутами.
нет, сейчас уже не чат вовсе, а простая страница, в которой куча записей в таблице с состояниями однотипных объектов. Задача: обновлять эти состояния. В ВКашечке те же сокеты или старый добрый AJAX?
Я почему ВК затрагиваю уже во второй раз: дело в том что ресурс достаточно популярный и тамошние разработчики всяко заинтересованы в повышении эффективности обмена данными. И раз уж они ввели динамическую загрузку и авто-обновленние, то скорей всего справились с задачей на ура
Websockets обычно используют для real time приложений. Думаю чаты в VK, FB, G+ все уже на нем. Может они дополнительно используют его для транспорта других данных.
В любом случае вам понадобиться асинхронный сервер типа torrnado, еще какие то вложения. И если у вас много обновляющихся данных, которые надо тут же выводить — стоит задуматься о нем. Хотя убедитесь, что все ваши клиенты смогут поддерживать его, все же технология новая особо не обкатанная.
с клиентами проблем не будет, все пользователи — айтишнеги, вооружаться последними хромами и лисами и всё будет норм.
Дело в том, что я использую для ресурса ASP.NET MVC 3/4, и стоящая передо мной задача скажем скорей плюшка, чем строгая необходимость, чтобы устанавливать ещё один сервер
К сожалению мои познания .NET оканчиваются на С#. Но я точно знаю ASP.NET MVC поддерживает это дело. Вопрос как интегрировать, но думаю вы разберетесь. Статьи точно были на эту тему.
не подскажите, сталкивались ли с проблемой, когда превышалось максимальное количество подключений к домену из браузера? как обходили? помимо создания зеркал конечно же
из статьи на хабре, которую вы привели, я извлек информацию, что браузеров имеется ограничение на кол-во подключений к одному домену, если открыто несколько вкладок. Также в комменте внизу было озвучено, что, к примеру, ВК использует одно подключение на все вкладки. Вы с такой проблемой сталкивались?
Реализация на Node.js — socket.io/
Здесь в зависимости от поддерживаемых клиентом возможностей происходит graceful degradation, т.е. выбирается наиболее эффективный из доступных транспортов.
На данный момент поддерживаются следующие транспорты:
— websockets
— flash socket
— ajax long polling
— AJAX multipart streaming
— бесконечный iframe
— ajax polling
websocket, я уже видел, что о не уже рассказали коментами выше, но хочу добавить.
1) Есть вебсокеты и их flash замена, что делает технологию вебсокетов кроссбраузерной. Костылями, но куда-же без них.
2) Преимущество вебсокетов в том, что сервер может отправить сообщение, не только клиент.
3) Куча готовых инструментов, особенно под node.js.
Если ваше приложение Just for fun, покопайте веб сокеты.
Я реализовываю игрушку, где общение между клиентом и сервером идет по вебсокетам. Очень доволен новой технологией. Даже при медленном инете, вебсокеты показывают хорошие результаты.
Тут всё зависит от того какие ЯП Вы планируете использовать. Перспективные технологии websocket и Long polling не на всех ЯП работают корректно, существует множество явных недостатков. Если хотите работать с этими технологиями, то сразу проверяйте свой ЯП на корректность работы.
Если у Вас нет требования к «моментальному» обновлению, лучше использовать старый добрый AJAX, так гемороя будет меньше. jQuery прекрасно обеспечивает все механизмы для работы с Ajax.