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

SharedObject.get()

SharedObject.get(name, persistence [, netConnection])

Статический; создает общий объект или возвращает ссылку на уже существующий общий объект. Перед тем как совершать какие либо операции с общим объектом, серверный скрипт должен получить ссылку на общий объект с помощью метода SharedObject.get(). Если запрашиваемый общий объект не найден, будет создан новый экземпляр.

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

Flash Communication Server 1

Параметры

name
Имя экземпляра общего объекта, ссылку на который нужно возвратить.

persistence
Булевая величина: для постоянных общих объектов равная true; false для непостоянных общих объектов. Если никакого значения не указано, значением по умолчанию является false.

netConnection
Объекты типа NetConnection представляющий собой подключение к экземпляру приложения. Передавая этот параметр, можно получить ссылку на общий объект, находящийся на другом сервере или же на общий объект пренадлежащий другому экземпляру приложения. Все извещения об обновлениях для общего объекта указанного в параметре name проксируются в этот экземпляр и удалённый экземпляр извещает локальный экземпляр об изменениях в постоянном общем объекте. При вызове SharedObject.get(), объект типа NetConnection, указанный в качестве параметра netConnection может быть неподключенный. Сервер подключается к удалённому общему объекту, как только состояние NetConnection меняется на подключен. Этот параметр необязательный.

Возвращает

Ссылку на экземпляр класса SharedObject.

Подробности

Существуют два типа общих объектов, постоянные и непостоянные, имеющих отдельные пространства имен. Это означает, что постоянный и непостоянный общие объекты могут иметь одинаковое имя и существовать как два отдельных общих объекта. Областью видимости общих объектов является пространство имен экземпляра приложения, распознаются общие объекты с помощью строки. Имена общих объектов должны соответствовать спецификации URI.

Так же SharedObject.get() можно использовать для получения ссылки на общий объект, находящийся в пространстве имен другого экземпляра приложения. Этот экземпляр приложения может находится как на том же, так и на другом сервере и называется проксированый общий объект. Что бы получить ссылку на общий объект, находящийся в другом экземпляре приложения, нужно создать объект типа NetConnection и с помощью метода NetConnection.connect() подключится к экземпляру приложения которому принадлежит общий объект. Далее созданный объект типа NetConnection нужно передать в качестве параметра netConnection методу SharedObject.get(). Серверный скрипт должен получить ссылку на проксированный общий объект до того как к нему начнут пытаться обращаться клиенты. Для того что бы это сделать, можно вызывать SharedObject.get()в обработчике событий application.onAppStart().

Если при вызове SharedObject.get() с указанным параметром netConnection приложение уже имеет общий объект с таким же именем, общий объект будет конвертирован в проксированый общий объект. Все сообщения общего объекта предназначенные для клиентов подключенных к проксированному общему объекту направляются главному экземпляру (master instance).

Если состояние подключения объекта типа NetConnection указанного в качестве параметра netConnection меняется с подключен на отключен, проксированный общий объект переводится в в режим холостого хода и полученные от подписчиков сообщения будут отброшены. В случаи потери соединения срабатывает NetConnection.onStatus() обработчик событий. Далее можно повторно установить соединение с удалённым экземпляром и вызвать SharedObject.get(), что поменяет состояние проксированного общего объекта с холостого хода на подключен.

Если для уже подключенного проксированного объекта вызвать SharedObject.get() с новым объектом типа NetConnection и если URI новго объекта NetConnection не совпадает с указанным в текущем объекте NetConnection, проксированный общий объект прекращает подписку на прослушивание событий предыдущего общего объекта, рассылает всем своим подписчикам событие clear и подписывается на прослушивание нового экземпляра общего объекта. В случаи, если операция подписки к проксированному общему объекту проходит успешно, все подписчики переинициализируются к новому состоянию. Такой процесс дает возможность переносить общий объект с одного экземпляра приложения в другой без отключения клиентов.

Полученные проксированным общим объектом обновления, поступившие от подписчиков, проверяются с целью выявить, можно ли их отвергнуть основываясь на текущем состоянии версии проксированного общего объекта и версии полученной от подписчика. Если изменения можно отвергнуть, проксированный общий объект не передает сообщение дальше к удалённому экземпляру; сообщение об отклонении отправляется подписчику.

Со стороны клиента существует соответственный метод ActionScript SharedObject.getRemote().

Пример

В следующем примере в функции onProcessCmd(), создается общий объект с именем foo. Эта функция передает параметр cmd, который назначается как свойство общего объекта.

function onProcessCmd(cmd){ 
    // Сюда идет код. 
    var shObj = SharedObject.get("foo", true); 
    propName = cmd.name; 
    shObj.getProperty (propName, cmd.newAddress); 
} 

В этом примере используется проксированный общий объект.
Проксированный общий объект находится на сервере или экземпляре приложения (так называемом master) отличном от сервера или экземпляра приложения к которому подключается клиент (так называемом proxy). Когда клиент подключается к proxy и получает удалённый общий объект, proxy подключается к master и передает клиенту ссылку на этот общий объект. Следующий код помещен в файле main.asc:

application.appStart = function() { 
    nc = new NetConnection(); 
    nc.connect("rtmp://" + master_server + "/" + master_instance); 
    proxySO = SharedObject.get("myProxy",true,nc);  
        // Тепер, всякий раз когда клиент запрашивает постоянный 
		 // общий объект именуемый myProxy, он получает 
		 // общий объект themyProxy находящийся на master_server/master_instance.
};

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

Ярлыки: , ,

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