ГлавнаяСправка по использованию серверного ActionScriptКласс Application › application.onPublish()

application.onPublish()

application.onPublish = function (clientObj, streamObj){}

Вызывается, когда клиент начинает публиковать поток в приложение. Используйте этот обработчик событий для перенаправления трафика на другие сервера если вы разрабатываете крупномасштабные приложения трансляции прямого эфира; это так называемое многопунктовая публикация (multipoint publishing). Например, для поддержания подписчиков, находящихся в разных географических местах, можно передавать трафик, находящийся на центральном сервере в одном городе (Server A) на центральные сервера находящиеся в двух других городах (Server B и Server C). Следующий процесс описывает данный сценарий:

  1. Публикующий клиент подключается к Server A и начинает публикацию.

  2. Server A получает уведомление, отправленное в серверном скрипте обработчиком событий application.onPublish().

  3. Внутри обработчика onPublish() создаем два объекта типа NetStream, то есть открываем два потока на Server B и Server C.

  4. Вызывая метод NetStream.publish() для перенаправления публикуемых данных с Server A к Server B и Server C.

  5. Подписчики серверов Server B и Server C принимают тот же живой эфир.

В этом примере, публикующий клиент, подключен и публикует только на Server A. Остальной ход событий управляется логикой серверного скрипта.

Примечание: В этом обработчике событий изменять свойства объекта типа Client невозможно.

Доступно с версии сервера

Flash Media Interactive Server 3 и Flash Media Development Server 3

Параметры

clientObj
Объект типа Client; клиент публикующий поток в приложении.

streamObj
Объект типа Stream; поток, публикуемый в приложение.

Возвращает

Сервер игнорирует любое возвращаемое значение.

Остальные методы и свойства

Ярлыки: , ,

  1. Руслан
    April 4th, 2012 at 15:38 | #1

    Добрый день, Руслан! Подскажите, пожалуйста, что нужно сделать, чтобы на FMS срабатывали события application.onPublish() и application.onUnpublish() ?
    Стоит такая задача: нужно контролировать публикуемые клиентами потоки. Если название потока удовлетворяет прописанным на сервере условиям, то разрешить публикацию, иначе отклонить. Потоки публикуются не на сервер, а в группу P2P. Т.е. на сервере публикуемые потоки не записываются, они доступны только клиентам в группе P2P. FMS нужен только для контроля доступа к созданию публикации потока в группе.
    Есть ли вообще возможность сделать такое на FMS:
    1) получить название публикации когда клиент вызывает функцию netStream.publish(“name”, “live” )
    2) получить название группы в которой клиент собирается публиковать поток. – GroupSpecifier(groupName);
    Используются NetGroup, NetStream и GroupSpecifier. GroupSpecifier имеет такую конфигурацию :
    groupSpecifier = new GroupSpecifier(groupName);
    groupSpecifier.multicastEnabled = true;
    groupSpecifier.postingEnabled = true;
    groupSpecifier.serverChannelEnabled = true;

  2. April 23rd, 2012 at 11:19 | #2

    Приветствую.
    Нужно добавить соответствующие обработчики.
    application.onPublish = function(client, stream_obj) {
    trace(“onPublish::”+stream_obj+” stream_obj:”+stream_obj.name);
    var stream_name = stream_obj.name;
    if (stream_name == “то_что_нужно”) {
    client.writeAccess =”место_куда_можно писать”;

    }else{
    client.writeAccess=””; // запретить записывать
    }
    }
    Если честно, то вызываются ли они при попытке публиковать в группу я не знаю, не пробовал.

    Нужно попробовать создать подключение через RTMFP, создать NetStream с GroupSpecifier, начать туда публиковать и посмотреть сработают ли эти обработчики на сервере.

  1. Пока нету.