Обратный Аякс без кометы? - PullRequest
7 голосов
/ 03 мая 2009

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

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

Ответы [ 4 ]

5 голосов
/ 26 сентября 2009

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

Да, это возможно через 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 , если вы ищете сервер, способный отправлять сообщения в браузер через Reverse Ajax.

2 голосов
/ 03 мая 2009

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

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

2 голосов
/ 03 мая 2009

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

2 голосов
/ 03 мая 2009

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

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

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

...