вторник, 15 марта 2011 г.

Minipodcast. Часть 1 -- общение флэш клиента с Erlang сервером.

Minipodcast. Часть 1 -- общение флэш клиента с Erlang сервером.:

Tags:

Intro

Задумал я тут мелкий проект -- помесь миниблога с подкастом -- миниподкаст. Зачем? Erlang пощупать, да скринкасты записать :) Ну и потом запустить это на своем сайте, чтобы доставать народ не только своей занудной писаниной, но и своим занудным голосом.

Технически все просто -- флэш клиент (audio recorder) соединяется с erlyvideo, захватывает микрофон и публикует аудиопоток. Erlyvideo сохраняет это дело в flv файл.

Затем флэш клиент соединяется с Erlang сервером (пока отдельный сервер, потом, может быть, это будет плагин к erlyvideo), и просит его сохранить инфу о записи (id, name, description, creation date и т.д.). Сервер сохраняет это дело в базе данных Mnesia.

Затем другой флэш клиент (minipodcast player) соединяется с Erlang сервером, получает список записей, отображает их. Для прослушивания записи соединяется с erlyvideo и получает flv файл.

Ну и все.

Работу над сим несложным проектом я решил осветить в серии статей и скринкастов.

Скринкаст к данной статье:

Если бы это был коммерческий проект, мы бы оценили его, помимо всего прочего, со стороны возможных рисков. В проекте есть часть, по которой нет ни знаний, ни опыта -- это написание Erlang сервера и общение с ним флэш клиента. А раз нет ни знаний, ни опыта, то эта часть самая рискованная. А раз она сама рискованная, то с нее и нужно начинать работу :)

Почему Erlang?

В коммерческом проекте мы бы выбирали технологию под требования проекта. В домашнем проекте можно поступать наоборот. И можно даже полностью проект придумать под технологию. Что я и сделал в данном случае :)

Erlang вполне годен для многопользовательских риалтаймовых приложений. Коими мы, по большей части, и занимаемся. Так что я вполне вижу ему место в наших коммерческих проектах. Только опыта надо набрать.

Erlang сервер

Разумеется, для знакомства с Erlang нужно прочитать (хотя бы частично) одну из двух книг:

А еще весьма актуальна для данного проекта книга Erlang OTP in Action, где подробно описан OTP фреймворк, стандартный для Erlang проектов. В этой книге, в 11-й главе есть практически готовый вариант TCP сервер, который нужно лишь чутка адаптировать к флэш клиенту. А именно -- реагировать на его security policy request и сериализовать/десериализовать AMF данные.

Там предлагается TCP сервер в виде стандартного OTP приложения, с супервайзером, с gen_server behaviour и прочими такого рода штуками. Он умеет принимать соединения, получать и отправлять бинарные данные. Разумеется, он может обслуживать несколько клиентов одновременно, запуская для каждого из них отдельный поток. Что не проблема для Erlang (а для Java, например, было бы проблемой).

Пересказывать то, что прекрасно описано в книге, во-первых, глупо, во-вторых, лень. Посему остановлюсь только на том, что специфично в данном проекте.

Privacy policy request

Разработчики флэш плеера решили осложнить мне, разработчику под флэш плеер, жизнь. И для этого придумали модель безопасности. Это модель подразумевает, что я, разработчик под флэш плеер, являюсь злобным созданием, и из всех сил стремлюсь навредить пользователю. В принципе подход правильный :) [...]

Комментариев нет:

Отправить комментарий