Как вы можете отправить данные на клиент веб-страницы?

Я только что узнал о AJAX Push Engine, но он работает на Linux / Apache, что для меня не вариант.

http://www.ape-project.org/

В настоящее время с AJAX, чтобы поддерживать актуальность страницы, мне приходится часто опрашивать сервер, что не очень хорошо для сайта с высоким трафиком. Возможность передавать данные клиенту только при необходимости - отличный вариант, но изначально JavaScript не поддерживает сокеты, AFAIK. Одна хитрость, о которой я читал, но сайт теперь отсутствует, это использование Flash-модуля для обработки сообщений сокетов и передачи сообщений в JavaScript.

Проблема с исследованием этого подхода состоит в том, что «JavaScript push», поскольку ключевые слова предлагают функцию push для массивов вместо нужного мне контекста.

Как установить постоянное соединение с сервером для выполнения push-коммуникаций в браузере? Нужен ли мне Flash / ActionScript или есть другая опция, которая будет работать со всеми активными в настоящее время браузерами? (IE6 / 7/8, FF3, Safari, Chrome)

Когда дело доходит до сервера, мне также нужно разобраться в сложностях из-за политики Origin и безопасности портов. Я ценю все, что вы можете указать, что объяснит доступные варианты.

 Brennan04 июн. 2009 г., 23:04
Я нашел несколько связанных вопросов, которые приводят к некоторым ответам ... и другим вопросам. :)stackoverflow.com/questions/471780/... stackoverflow.com/questions/50831/... stackoverflow.com/questions/219868/... stackoverflow.com/questions/847227/...

Ответы на вопрос(4)

Решение Вопроса
 cgp04 июн. 2009 г., 18:19
Я просто собирал свою ссылку :)
 James04 июн. 2009 г., 18:18
Похоже на длительный опрос?

Direct Web Remoting (DWR) библиотека поддерживает Reverse Ajax, который звучит как то, что вы ищете. Он поддерживает Comet (наряду с Polling и PiggyBack). Больше информации на их сайте:http://directwebremoting.org/dwr/index.html

но я не читал ничего о проблемах масштабируемости на этих страницах вики. Что делает веб-сервер, если у вас 10 000 открытых длинных опросов?

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

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

 cdonner05 июн. 2009 г., 00:21
Что ж, altCognito, если Тодд Хофф прав в своем блоге, то в прошлом году Facebook обошелся в 100 миллионов долларов на инвестиции в оборудование. Но в статье есть еще несколько подробностей о реализации сервера. Очевидно, что длинный опрос - это не то, что вы хотите делать в IIS в .Net или любой другой основной веб-серверной / языковой платформе, где каждое заблокированное соединение связывает дорогие ресурсы.
 cdonner05 июн. 2009 г., 00:21
 cgp04 июн. 2009 г., 20:50
Кажется, что Facebook и Google используют длинные опросы, и они еще не упали. Это неневозможно с помощью любых средств.
 Brennan04 июн. 2009 г., 22:08
Если вы хотите открыть соединение с клиентом с сервера, а NAT препятствует использованию метода стука портов для установления соединения. Тогда вы можете поддерживать сокет. Моя задача - ограничить количество активных сокетов на сервере. Я бы, по крайней мере, иногда сбрасывал соединение или отключал неактивных клиентов, если бы мог определить, не занят ли клиент.

Ваш ответ на вопрос