Как запустить метод, когда onPublish запускается в Adobe Media Server?

У меня есть следующий код внутри Adobe Media Server main.asc (последняя версия 5.0.10, я думаю):

application.onPublish = function (clientObj, streamObj) {
  for (var i = 0; i < application.clients.length; i++){
    application.clients[i].call("streamConnected");
  }
}

И этот код в моем файле ActionScript (3.0), связанном с моим файлом флэш-памяти:

nc = new NetConnection();

nc.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
nc.client = { onBWDone: function():void{}, streamConnected: function():void{} };
nc.connect(videoURL);

...

public function streamConnected(...rest):void {
  trace("Stream Connected");
}

Я не слишком уверен, что означает мой код - большая его часть была получена из различных разделов Интернета, поэтому любая помощь будет принята с благодарностью.

1 ответ

Решение

Используя ваш текущий код, единственная функция, которая будет выполнена, это пустая функция, которая определена внутри nc.client объект, потому что streamConnected() функция не привязана к nc.client"s streamConnected имущество.

Итак, чтобы получить "Stream Connected" сообщение, вы можете изменить эту анонимную функцию следующим образом:

nc.client = { 
    onBWDone: function():void{}, 
    streamConnected: function(...rest):void {
        trace("Stream Connected");
    }
};

или просто вы можете использовать свой существующий streamConnected() функция:

nc.client = { 
    onBWDone: function():void{}, 
    streamConnected: streamConnected
};

Надеюсь, что это может помочь.

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