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

Stream.send()

myStream.send(handlerName, [p1, ..., pN])

Вызывает удалённый метод объекта NetStream на стороне клиента, передавая параметры любого типа данных ActionScript. Сервер не принимает ответный объект, все значения, возвращаемые удалённым методом приложения клиента отбрасываются.

Вызывая Stream.send() можно передавать данные клиентам-подписчикам потока. Данные передаются в виде параметров p1,…, pN методу обработчику handlerName определенному для данного потока. Публикующиеся потоки не принимают удалённых вызовов метода, даже если для них определен метод с именем handlerName().

Внутри ключевого кадра данных с помощью метода Stream.send(), всем клиентам-подписчикам потока прямого эфира можно передавать метаданные. Если клиент подписывается на получение потока прямого эфира после того как тот начал свое вещание, клиент может не получить метаданные потока. Эти метаданные могут содержать интересующую клиента информацию о потоке, такую как продолжительность, имя выступающего, местоположение трансляции.

Ключевой кадр данных является специальным сообщением содержащим данные, которые можно добавить к потоку прямого эфира и сохранить в памяти сервера. Ключевой кадр данных извлекается когда клиент подписывается на прием потока. Существует два зарезервированных значения, сообщающих серверу о том, нужно ли установить или очистить ключевой кадр данных: @setDataFrame и @clearDataFrame.
Как и другие сообщения содержащие данные, ключевой кадр данных содержит имя обработчика и список параметров. Используя приведенный ниже синтаксис, можно установить или очистить ключевой кадр данных:

Stream.send("@setDataFrame", handlerName [, p1, p2, ..., pN ]);

Для каждого потока прямого эфира можно установить несколько ключевых кадров данных. Однако, имя обработчика событий ключевого кадра данных должно быть уникальным. Только публикующие поток и сервер могут устанавливать или очищать ключевые кадры данных. Для того что бы установить ключевой кадр данных потока, можно использовать клиентский метод ActionScript NetStream.send()или серверный метод Stream.send(). Ключевые кадры данных поддерживаются в Flash Media Interactive Server 3 и Flash Media Development
Server 3 а так же во всех последующих версиях.

Примечание: Для того что бы отправить сообщение, серверу не нужно отнимать право собственности на поток у клиента. После вызова send() собственником потока остается публикующий его клиент. Совсем иначе ведет себя метод Stream.play().

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

Flash Communication Server 1

Параметры

handlerName
Строка, указывающая удалённый метод, который будет вызван на стороне клиента. Значение handlerName является именем метода соответствующего подписанного объекта Stream. Напрмер, если handlerName равно doSomething, то метод doSomething будет вызван на уровне потока со всеми p1, …, pN параметрами. В отличии от методов Client.call() и NetConnection.call(), имя обработчика имеет только один уровень глубины проникновения (что значит, не может принимать форму object/method).

Примечание: Не используйте имена встроенных методов при именовании обработчиков. Например, если указать имя обработчика как close, это приведет к тому, что поток-подписчик будет закрыт.

p1, …, pN
Параметры любого типа ActionScript, включая ссылки на другие объекты ActionScript. Эти параметры передаются указанному обработчику при исполнении на стороне Flash клиента.

Возвращает

Булеву величину, равную true если сообщение было отправлено клиенту; в противном случаи false.

Пример

В следующем примере, вызывается метод onMsg() для клиентского объекта NetStream с отправленной ему строкой "Hello World":

s = Stream.get("testStream"); 
s.send("onMsg", "Hello World");

В следующем коде
ActionScript клиентской стороны определяется метод, управляющий данными переданными в потоке testStream:

ns = new NetStream(nc); 
ns.onMsg = function(str) { 
    trace(str); //"Hello World" в выводе 
} 
ns.play("testStream", -2, -1, 3);

В следующем пример потоку прямой трансляции добавляются метаданные:

s = new Stream(nc); 
s.onStatus = function(info){ 
    if (info.code == "NetStream.Publish.Start"){ 
        metaData = new Object(); 
        metaData.title = "myStream"; 
        metaData.width = 400; 
        metaData.height = 200; 
        this.send("@setDataFrame", "onMetaData", metaData); 
    } 
}; 
s.publish("myStream");

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

Ярлыки: , ,

  1. Пока без комментариев.
  1. Пока нету.