PDA

Просмотр полной версии : Как отделить клиентов FMS которые вещают от которые смотрят


petav
12.12.2008, 14:12
Здравствуйте. Перебираю клиентов так

for (i = 0; i < application.clients.length; i++) {
application.clients[i].call("callFromFMS", null);
}

Но вот ни задача так учитываются и клиенты которые вещают на хост и клиенты которые смотрят вещания. Покопался в документации "SERVER-SIDE ACTIONSCRIPT LANGUAGE REFERENCE FOR ADOBE® FLASH® MEDIA
INTERACTIVE SERVER" нашел класс "Client class", но что бы хоть какой нибудь метод возвращал тип вещания не нашел.

Вопрос: Как перебрать всех клиентов которые вещают и которые смотрят?

P.S.: У меня возникает идея отлавливать событие Publish на сервере, брать имя клиента и заносить его вмассив. Так у меня получится массив всех клиентов которые вещают, кстате я не знаю буде ли этот массив доступен на протяжении всей работы хоста, и смогут ли новые подключившиеся обращаться к данным накопленным в нем. Я заблуждаюсь? Я вот такой пример нашел публикации/депубликации:

Client.prototype.FCPublish = function( streamname )
{
if ( true) // do some validation here
{ // this is optional.
this.call("onFCPublish", null, {code:"NetStream.Publish.Start", description:streamname});
}
else
{
this.call("onFCPublish", null, {code:"NetStream.Publish.BadName", description:streamname});
}

}


Client.prototype.FCUnpublish = function( streamname )
{
this.call("onFCUnpublish", null, {code:"NetStream.Unpublish.Success", description:streamname});
}

tikhop
12.12.2008, 17:19
application.onConnect = function (client)
{
application.acceptConnection(client);

client.publish=false;
};

вместо publish может быть что угодно, это проссто мы создаем свойство, которое можно потом получить!


Потом перебираешь:

for (i = 0; i < application.clients.length; i++)
{
if(application.clients[i].publish==false)
{
//Клиенты которые смотрят, не вещают!
}
}


PS это может и не работать, я сейчас подумал, ведь когда паблишер подключается у него так же срабатывает событие онКоннект, надо тестить!

petav
12.12.2008, 23:39
А если событие onPublish использовать, я как понимаю оно только при публикации медиапотока срабатывает.

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

tikhop
13.12.2008, 01:16
А если событие onPublish использовать, я как понимаю оно только при публикации медиапотока срабатывает.
Вобщем делать можно так, на 99 процентов уверен, просто не тестировал!

application.onConnect = function (client)
{
application.acceptConnection(client);

client.publish=false;
};


application.onPublish = function (clientObj, streamObj)
{
client.publish=true;
}


Потом перебираешь:

for (i = 0; i < application.clients.length; i++)
{
if(application.clients[i].publish==false)
{
//Клиенты которые смотрят, не вещают!
}
}