На самом деле он ничем не отличается от обычного HTTP-трафика, только дольше.
Что происходит, когда вы открываете сайт? (очень грубый обзор)
- Ваш компьютер связывается с сервером, устанавливает соединение.
- Сервер начинает отправлять вам данные, разбитые на пакеты.
- Ваш компьютер получает пакеты, возможно, не в порядке, а некоторые со значительной задержкой, и повторно собирает их в веб-сайт.
- Ваш компьютер отправляет подтверждение для полученных пакетов.
- Сервер будет повторно передавать любые пакеты, в течение которых он не получал подтверждения в течение значительного времени, при условии, что они были отброшены в пути.
- Между получением пакетов и / или подтверждений оба ждут.
- Когда все данные, необходимые для отображения сайта, передаются, ваш компьютер благодарит сервер за его время и отключается.
Если в какой-либо момент в этом процессе какая-либо сторона перестает отвечать на запросы в течение значительного периода времени, любая сторона может разорвать соединение, если возникнут технические трудности.
Что происходит с «потоковыми потоками данных»? (даже более грубый обзор)
- Клиент связывается с сервером, устанавливая соединение.
- Сервер начинает отправлять данные, разбитые на пакеты, клиенту.
- Клиент получает пакеты, возможно, не в порядке, а некоторые со значительной задержкой, и повторно собирает их.
- Клиент отправляет подтверждение для полученных пакетов.
- Сервер будет ретранслировать любые пакеты, в течение которых он не получал подтверждения в течение значительного времени, при условии, что они были отброшены в пути.
- Между приемом пакетов и / или подтверждений оба ждут.
Единственное отличие состоит в том, что клиент не зависает на сервере, потому что он все еще ожидает данные, и оба не так быстро разрывают соединение.
Дело в том, что веб-серверы (для веб-сайтов сайтов ) специализируются на задачах по доставке небольших фрагментов данных многим людям, поэтому они быстро зацикливаются на Вы однажды все данные были отправлены. Ваш серверный скрипт может просто не выйти из , и соединение останется живым. Вот небольшой PHP-скрипт, который продемонстрирует, что:
while (true) {
echo '.';
sleep(1);
}
Это будет отправлять новые .
каждую секунду в течение неопределенного времени (обратите внимание, что веб-сервер должен быть настроен соответствующим образом, чтобы не завершать сценарий и немедленно отправлять выходные данные).
Попробуйте статью Википедии о TCP / IP для ознакомления с основами и эту статью о длинном опросе / потоковой передаче HTTP для конкретных примеров.