Почему установление соединения в реальном времени было затруднено с помощью протокола HTTP? - PullRequest
0 голосов
/ 31 января 2020

Почему установление соединения в реальном времени было затруднено с помощью протокола HTTP. Поскольку HTTP реализован через TCP-соединение, которое является надежным и поддерживает постоянное соединение, оно должно быть проще. правильно?. Как Web Sockets решает эту постоянную проблему с подключением?

1 Ответ

1 голос
/ 31 января 2020

До HTTP / 2 HTTP / 0.9 и HTTP / 1.x были только протоколами команда + ответ. Клиент отправит команду, сервер отправит ответ, готово, ничего больше. А до HTTP / 1.1 поддержание соединения TCP после каждого ответа было невозможно в HTTP / 0.9 и не было обычной практикой в ​​HTTP / 1.0. HTTP / 1.1 стандартизировал эту практику.

Таким образом, было очень трудно реализовать какие-либо постоянные двунаправленные коммуникации в режиме реального времени по HTTP до последних лет. Конечно, были разработаны различные технологии, чтобы попытаться решить эту проблему (длительный опрос, подталкивания на стороне сервера и т. Д. c), но на самом деле ничего не было широко принято и не вошло в общую практику во всех реализациях.

Затем появились WebSockets наряду с этим, который был специально разработан для устойчивой двунаправленной связи таким образом, чтобы его было легко добавить к существующим инфраструктурам HTTP, чтобы администраторам серверов не приходилось повторно инвестировать в новые технологии, сохраняя обратную совместимость со старыми системами HTTP, которые не может / не будет поддерживать WebSockets.

Затем появился HTTP / 2, в который теперь встроены серверные запросы и мультиплексирование, прямо в протокол HTTP, что устраняет многие недостатки старых версий HTTP и охватывает некоторые из сценариев использования, для которых использовались WebSockets, но не устареет полностью Websockets .

HTTP имеет очень долгую историю эволюции, чтобы добраться туда, где он находится сегодня. Эволюция требует времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...