Вопрос

Можно ли разрешить веб-серверу отправлять сообщение в веб-браузер без Comet?

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

Это было полезно?

Решение

  

Можно ли разрешить веб-сервер   отправить сообщение в веб-браузер   без кометы?

Да, это возможно с помощью Silverlight, Flex, Flash и Java-апплетов.

  

Каждая крупная веб-компания, такая как Facebook   и Google использует комету для этой цели   и это только кажется уродливым взломать   ожидание исчезнуть, если TCP   соединения были включены для основных   браузеры.

TCP-соединения в стиле HTML 5 Web Sockets не решат проблему. Вы видите, что многие люди используют Google и Facebook со своих рабочих мест, в университетах или школах, а брандмауэры часто блокируют нестандартные порты и трафик не HTTP. Таким образом, решение, которое отправляет сообщения в веб-браузер, должно работать через HTTP и часто выглядеть как HTTP. Вот почему Google и Facebook используют Comet и будут продолжать это делать, иначе они не смогут охватить большой процент своих пользователей. Фактически, некоторые брандмауэры и обратные прокси-серверы закрывают долго работающие HTTP-соединения, поэтому соединение Ajax-опрос часто используется в качестве запасного. Я могу предложить что-то вроде StreamHub Reverse Ajax , если вы ищете сервер, способный отправлять сообщения в браузер через обратный Ajax.

Другие советы

Как вы думаете, почему Facebook и Google сделали бы это, если бы был другой путь?

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

Было обсуждено добавление событий, отправленных сервером и веб-сокеты для HTML5, но это очень предварительно и, вероятно, не станет стандартом.

As " Comet " это искусственный термин для всего, что использует существующий протокол http для имитации потока данных, боюсь, вы ничего не можете сделать.

Единственным решением будет "улучшение" текущего протокола или некоторых широко используемых, вероятно, основанных на плагинах решений ... вы можете использовать Java для этого. Но это вызовет другие проблемы, потому что в основном вам необходимо иметь входящее соединение в этом браузере.

Comet может быть реализован как простой ajax-вызов с длинным опросом, поэтому он становится вопросом семантики. Вот, например, плагин jquery , который реализует Comet с использованием протокола Байе поверх ajax-вызова jQuery .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top