Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Как отделить клиентов FMS которые вещают от которые смотрят (http://www.flasher.ru/forum/showthread.php?t=119120)

petav 12.12.2008 14:12

Как отделить клиентов FMS которые вещают от которые смотрят
 
Здравствуйте. Перебираю клиентов так
Код AS1/AS2:

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 на сервере, брать имя клиента и заносить его вмассив. Так у меня получится массив всех клиентов которые вещают, кстате я не знаю буде ли этот массив доступен на протяжении всей работы хоста, и смогут ли новые подключившиеся обращаться к данным накопленным в нем. Я заблуждаюсь? Я вот такой пример нашел публикации/депубликации:
Код AS1/AS2:

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

Код AS1/AS2:

application.onConnect = function (client)
{
    application.acceptConnection(client);
 
    client.publish=false;
};

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

Код AS1/AS2:

Потом перебираешь:
 
    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 процентов уверен, просто не тестировал!

Код AS1/AS2:

application.onConnect = function (client)
{
    application.acceptConnection(client);
 
    client.publish=false;
};

Код AS1/AS2:

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

Код AS1/AS2:

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



Часовой пояс GMT +4, время: 14:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.