Как подключить сервер потоковой передачи HTTP APE (Ajax Push Engine) к ресурсоемкому серверу
Я изучал APE (Ajax Push Engine - http://www.ape-project.org/) в течение нескольких недель, и я прочитал всю документацию, которую они имеют на веб-сайте.
Проект APE претендует на "потоковую передачу данных в реальном времени", но я просто не могу найти хороший пример для этого. Я немного разочарован их документацией.
Возможную вики-страницу я читаю на их сайте: http://www.ape-project.org/wiki/index.php/Tutorial:How_to_write_an_application_with_APE
Но опять же, он просто имеет некоторые понятия, а не подробную информацию.
После некоторого поиска в Google я начал чувствовать разочарование. Никаких ценных руководств или примеров для моей цели.
Так что я публикую это здесь.
По сути, я хотел сделать так, чтобы сервер потоковой передачи HTTP (с очень дорогими вычислениями) мог все еще достаточно хорошо масштабироваться (100 или 200 клиентов). Требования:
- Использовать протокол HTTP (без RTMP);
- Клиент передает аудиоданные на сервер;
- Сервер принимает аудиоданные, обрабатывает их и отправляет результат обратно в ЦИВ, получая аудиоданные от клиента;
- Обработка аудиоданных выполняется в библиотеке C/C++;
- Сервер также может передавать потоковые аудиоданные на несколько секунд клиенту, и клиент может воспроизводить звук, пока он принимает аудиоданные с сервера;
- Между клиентом и сервером должно быть установлено долговременное соединение / сеанс, и сервер должен обнаруживать разъединение (TimeOut или UserDisconnect);
Мои вопросы:
- Какие примеры APE и учебные пособия я должен прочитать, чтобы облегчить мои потребности?
- Где я могу найти хороший пример использования APE HTTP Streaming?
- Как я могу создать очень простой пример потоковой передачи HTTP (серверные потоки)?
- Как я могу подключить свою дорогостоящую C/C++ lib библиотеку на стороне сервера?
- Как я могу поддерживать состояние каждого клиентского соединения / сеанса на стороне сервера?
Если кто-нибудь знает какие-либо мои требования или вопросы, пожалуйста, дайте мне знать.
Благодарю.
Питер
1 ответ
APE предназначен для обмена данными JSON, а не потоковыми данными. Таким образом, вы должны найти решение, где ваш стандартный веб-сервер (на котором работает ваша библиотека) получает и анализирует данные. То, что вы можете сделать с APE, это так называемый "встроенный push". Это означает отправку данных с внутреннего сервера на сервер APE, чтобы он мог пересылать данные клиентам.
В вашем случае я бы регулярно делал так, чтобы библиотека синтаксического анализа отправляла обновление статуса на сервер APE, чтобы оно могло быть передано клиенту.
По поводу ваших вопросов:
- http://www.ape-project.org/wiki/index.php/Libape-controller
- Нигде - это не для этого
- С другим языком программирования на стороне сервера на ваш выбор
- Очевидно, что зависит от вашего Apache / Nginx и языка сервера
- Это то, что APE может и будет делать - если вы выполняете необходимое программирование на стороне сервера. Вы уже прокомментировали мой блог, поэтому, возможно, вы видели http://www.xosofox.de/2010/10/ape-user-handling/ - это должно дать вам несколько советов.
ТЛ; др
- Использовать другой сервер в качестве бэкэнда для lib
- Пусть сервер lib отправляет короткие обновления статуса через встроенную передачу в APE, чтобы APE отправляла его клиенту