Почему браузеры не позволяют открывать обычное соединение вместо Ajax или Comet? - PullRequest
1 голос
/ 09 мая 2009

Если вы хотите открыть двустороннее соединение между браузером и сервером, единственный вариант - опросить (забить сервер) или использовать комету (жесткая и склонная к отключениям).

Почему браузеры не позволяют вам открывать простое TCP-соединение? Есть ли практическая польза от отсутствия этой способности?

Ответы [ 5 ]

5 голосов
/ 09 мая 2009

Базовый протокол HTTP в основном является полудуплексным протоколом связи, который также не имеет состояния и не поддерживает полнодуплексную связь. Однако с HTML 5 веб-сокетами все изменится. Websockets - это новый стандарт, который рассматривается в спецификации HTML 5. После того, как спецификации будут завершены и все поставщики браузеров адаптируют стандарты, вы можете использовать веб-сокеты для установления выделенного TCP-соединения через сами браузеры.

Мы также должны помнить, что HTTP в основном был разработан для доставки документов и обмена информацией между территориально распределенными группами, и он не был предназначен для протокола связи как такового.

Сказав это, уже есть компании, которые создали несколько шлюзов обмена сообщениями, чтобы вы могли реализовать полнодуплексную связь.

0 голосов
/ 11 марта 2010

Межсетевые экраны. Не HTTP-трафик часто блокируется брандмауэрами, поэтому открытие случайного TCP-порта для связи часто не удается.

0 голосов
/ 03 января 2010

Ответ на ваш вопрос, по сути, отрицательный, нет ощутимого преимущества в невозможности открыть двустороннее соединение между клиентом и сервером в браузере. Причина, по которой это не может быть сделано, заключается в том, что веб-браузеры не были предназначены для опроса / получения документов. С появлением богатых интернет-приложений стало желательным иметь такую ​​функциональность, но ранее это никогда не было целью браузера. В настоящее время существует пробел, который необходимо заполнить возможным протоколом или реализацией существующего протокола, который будет регулировать двустороннюю связь между браузером и сервером. Существуют методы, используемые для симуляции этого поведения в разной степени (AJAX, Comet и т. Д.), Или это можно реализовать с помощью встроенных объектов (Java, Flash, ActiveX Controls в IE), но это просто пути вокруг пустоты, а не мосты через это.

Нам просто придется подождать (или действовать), когда будет написан стандарт и будет следовать его реализация. Скорее всего, реализация будет на самом деле на первом месте, и у нас будет множество новых проблем совместимости с различными браузерами, которыми вы можете наслаждаться :) О, самый передовой!

0 голосов
/ 09 мая 2009

За многие годы многие аспекты или элементы сети были захвачены для того, чтобы предоставить более богатый опыт. Комета - это всего лишь один пример, где долгоживущие соединения использовались для того, чтобы позволить проталкивание на стороне сервера. Изначально веб-страницы предназначались только для гиперссылок с текстовыми документами, а не для приложений, которые мы часто видим сегодня. Взломы и злоупотребления тем, что предполагалось первоначальной мыслью, будут продолжаться до тех пор, пока однажды эти вещи не станут более стандартизированными.

0 голосов
/ 09 мая 2009

Учитывая, что эта функциональность эффективно доступна через flash, реального обоснования безопасности нет, но в наши дни ни один браузер не хочет быть первым, кто внедрил такое нестандартное расширение. Более того, не существует простого способа создания потоков, который может сделать использование сокета довольно неудобным.

...