В этой статье хотелось бы поговорить о том, как происходит получение данных в Интернете, в режиме реального времени и вообще будущее ли это теперешнего Интернета. Может уже многие слышали такое выражение, как real-time web, по сути это самый обычный набор технологий, который позволяет получать данные в сети Интернет, которые добавляются в режиме реального времени. А частным случаем данной технологии является real-time search – то есть поиск данных в режиме реального времени.
В настоящее время не так уж и много существует поисковиков в режиме реального времени, а также некоторые попытки поэкспериментировать в данной отрасли принадлежат такому поисковому гиганту как Google. Конечно, остается много открытых вопросов и нерешенных проблем, но самое главное, что сама трансляция данных в браузеры пользователя весь работоспособна.
Тут уместно рассмотреть протокол HTTP, с которым я думаю что многие знакомы. Именно с помощью запроса-ответа происходит работа в сети Интернет, как в принципе и всегда происходило взаимодействие пользователя и Интернета и именно после этого сформировалась технология Ajax, которая позволяет делать запросы к серверу уже после загрузки страницы браузера. На данный момент технология Ajax довольно популярна и именно следующим образом выглядит общение браузера и сервера:
Именно такое взаимодействие браузера с сервером называется термином polling (от английского — тянуть), а по сути, так и есть, именно вытягивание данных занимается браузер после загрузки страницы. В данной технологии есть огромные недостатки, а именно зачастую браузер делает довольно много запросов, а в ответ узнает, что новых данных для отображения вовсе и нет. А для решения данной проблемы появилась технология long polling, которая позволяет делать запросы тогда, когда знает, что возвратиться какой-то результат, то есть какие-нибудь данные. Пример ее взаимодействия показан ниже:
Эта техника называется Comet, которая подразумевает, что клиент (например, пользователь) создает только лишь одно соединение посредствам которого получает данные в режиме реального времени. Главным недостатком является то, что является сложной в реализации.
Для того, чтобы получать и запрашивать данные в режиме реального времени используется событийное программирование (англ. Event-based), а в большинстве языков программирования существуют различные фреймворки, для получения и обработки таких данных. Например, для Python – Twisted, Yaws для Erlang, Jetty для Java, а для Perl самыми популярными являются POE и AnyEvent.
Также советуем почитать на PressDev.RU
Короткая ссылка: http://pressdev.ru/?p=420