Могу ли я получать поток через HTTP с помощью JavaScript, Flash или Silverlight?

Я создаю прототип механизма уведомлений в реальном времени с использованием http через порт 80. Цель проекта - позволить приложению Flash быстро реагировать на событие на удаленном сервере (в частности, на входящий телефонный звонок, подключенный к телефону рядом с компьютером. .) Опрос - это один из подходов, но он слишком медленный. В настоящее время я использую соединение через сокет, чтобы получать уведомления о событиях на сервере с малой задержкой, что работает хорошо, но не поддерживает брандмауэр. Я не хочу ничего устанавливать на клиент, кроме Flash или Silverlight. Перекрестная совместимость браузеров не является проблемой - в этом приложении я могу указать, какой браузер использует клиент, но предпочтительнее IE.

Я сделал сервер HttpHandler в .NET, который никогда не закрывает соединение и отправляет «события» клиенту, записывая байты в поток ответов http (ConnectedClientContext.Response.OutputStream.Write и т. д.), И у меня есть клиент .NET. приложение, которое может читать эти сообщения нормально.

Мой вопрос:

Могу ли я получать байты с сервера по HTTP по мере их поступления с использованием JavaScript, Flash или Silverlight? Пока я могу найти только способ получать уведомления о «прогрессе загрузки» и не получать фактические байты, пока ответ не будет закрыт - я хочу, чтобы они приходили по мере их поступления.

Наилучшие пожелания,

Даниэль

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 480
3

Ответы 3

Я не знаю о Flash, но в Javascript (что вы имеете в виду в браузере) и Silverlight вы в значительной степени ограничены протоколом http.

Вы можете использовать Шаблон потоковой передачи AJAX Http. Основные идеи, которые отличаются от того, что вы пытаетесь сделать, заключаются в том, что как только данные становятся доступными, невыполненный запрос заканчивается и сразу же запускается новый асинхронно, то есть пока ваш клиент обрабатывает вновь поступившие данные.

Silverlight предоставляет вам больше возможностей, поскольку стек HTTP является чисто асинхронным, но вы можете получить поток к вам, как только данные начнут поступать, установив для HttpWebRequest.AllowReadStreamBuffering значение false. (В отличие от XmlHttpRequest, который всегда буферизируется).

Flex и Flash имеют несколько доступных библиотек удаленного взаимодействия AMF / XML, которые поддерживают передачу данных. Я бы обязательно посмотрел на это.

http://raghuonflex.wordpress.com/2008/04/17/data-push-in-flex-with-backend/

Эти библиотеки используют реализацию, подобную Комета -, для достижения этой цели.

Идеи Comet для уведомлений использовать очень просто. вам даже не нужно использовать специфичную для комет структуру. просто выполните запрос ajax с обратным вызовом при ответе, оберните его в цикл, и у вас будет цикл событий, как в приложении с графическим интерфейсом. на стороне сервера не утруждайтесь ответом на запрос, пока не произойдет событие или тайм-аут (который является просто «нулевым» событием).

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