Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flash.net 

XMLSocket  - AS3

Пакетflash.net
Классpublic class XMLSocket
НаследованиеXMLSocket Inheritance EventDispatcher Inheritance Object

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Класс XMLSocket реализует клиентские сокеты, позволяющие проигрывателю Flash Player или приложению AIR поддерживать связь с компьютером сервера, который определяется по IP-адресу или имени домена. Класс XMLSocket предназначен для клиент-серверных приложений, которым требуется наименьшая задержка, например системам интерактивного общения в реальном времени. В традиционном механизме веб-дискуссии (чата) на основе HTTP сервер часто опрашивается, при этом новые сообщения загружаются посредством HTTP-запроса. В противоположность этому, решение на базе XMLSocket поддерживает открытое подключение к серверу, позволяющее этому серверу мгновенно отправлять входящие сообщения без запроса от клиента. Для работы с классом XMLSocket на серверном компьютере необходимо запустить скрытый процесс (daemon), который понимает протокол, используемый классом XMLSocket. Данный протокол описывается в следующем списке:
  • XML-сообщения пересылаются через полнодуплексное потоковое подключение к сокету TCP/IP.
  • Каждое XML-сообщение представляет собой полноценный XML-документ, в конце которого стоит нулевой байт (0).
  • С помощью одного подключения XMLSocket можно пересылать и получать неограниченное количество XML-сообщений.

Настройка сервера на взаимодействие с объектом XMLSocket может вызвать определенные трудности. Если вашему приложению не требуется обмен данными в режиме реального времени, вместо класса XMLSocket можно использовать класс URLLoader.

Для использования методов класса XMLSocket необходимо сначала создать объект XMLSocket с помощью конструктора new XMLSocket.

SWF-файлам в изолированной программной среде, локальной для файловой системы, запрещено использовать сокеты.

Файлы политик сокетов на целевом узле определяют узлы, с которых SWF-файлы могут создавать подключения к сокетам, а также порты, доступные для таких подключений. В нескольких последних версиях Flash Player были ужесточены требования по безопасности относительно файлов политик сокетов. Компания Adobe рекомендует использовать файл политик для сокетов для всех версий Flash Player, а в некоторых случаях его применение является обязательным. Поэтому, если используются объекты XMLSocket, проследите, чтобы целевой узел при необходимости предоставлял файл политик для сокетов.

В следующем списке приводятся все требования к файлам политик сокетов для разных версий Flash Player.

  • В Flash Player 9.0.124.0 и более поздних версиях файл политик для сокетов является обязательным для любого подключения XMLSocket. Другими словами, файл политик для сокетов обязательно должен быть на целевом узле независимо от того, к какому порту выполняется подключение. Этот файл должен быть, даже если устанавливается подключение к порту на том же узле, на котором находится SWF-файл.
  • В приложении Flash Player 9.0.115.0 и более ранних версиях файл политик для сокетов на целевом узле является обязательным, если устанавливается подключение к порту с номером меньше 1024 или если требуется подключиться не к тому узлу, на котором размещен SWF-файл.
  • В Flash Player 9.0.115.0 при использовании отладочной версии проигрывателя в случае отсутствия файла политик для сокетов на целевом сервере отображается предупреждение, даже если файл политик для сокетов не является обязательным.

Однако в Adobe AIR эти ограничения по безопасности не распространяются на содержимое в изолированной программной среде безопасности application (содержимое, установленное с приложением AIR).

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Посмотреть примеры

Связанные элементы API



Общедоступные свойства
 СвойствоОпределено
  connected : Boolean
[только для чтения] Определяет, подключен ли в настоящий момент данный объект XMLSocket.
XMLSocket
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  timeout : int
Указывает время ожидания подключения в миллисекундах.
XMLSocket
Общедоступные методы
 МетодОпределено
  
XMLSocket(host:String = null, port:int = 0)
Создает новый объект XMLSocket.
XMLSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии.
EventDispatcher
  
Закрывает подключение, заданное объектом XMLSocket.
XMLSocket
  
connect(host:String, port:int):void
Создает подключение к заданному узлу в Интернете на указанный порт TCP.
XMLSocket
 Inherited
Посылает событие в поток событий.
EventDispatcher
 Inherited
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
  
send(object:*):void
Преобразует объект XML или данные, заданные параметром object, в строку, за которой следует нулевой байт (0), и передает ее на сервер.
XMLSocket
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным.EventDispatcher
  Отправляется, когда сервер закрывает подключение к сокету.XMLSocket
  Отправляется после успешного вызова метода XMLSocket.connect().XMLSocket
  Отправляется после отправки или получения необработанных данных.XMLSocket
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным.EventDispatcher
  Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции отправки или получения.XMLSocket
  Отправляется, если вызов метода XMLSocket.connect() инициирует попытку подключения к серверу за пределами изолированной среды вызывающего объекта, или к порту с номером, меньшим чем 1024.XMLSocket
Сведения о свойстве

connected

свойство
connected:Boolean  [только для чтения]

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Определяет, подключен ли в настоящий момент данный объект XMLSocket. Для того чтобы также проверить успешность подключения, можно зарегистрироваться на получение события connect и события ioError.



Реализация
    public function get connected():Boolean

Связанные элементы API

timeout

свойство 
timeout:int

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 10, AIR 1.5, Flash Lite 4

Указывает время ожидания подключения в миллисекундах.

Если подключение не будет установлено в течение заданного срока, попытка завершается ошибкой. Значение по умолчанию: 20,000 (двадцать секунд).



Реализация
    public function get timeout():int
    public function set timeout(value:int):void
Сведения о конструкторе

XMLSocket

()Конструктор
public function XMLSocket(host:String = null, port:int = 0)

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Создает новый объект XMLSocket. Если не указаны никакие параметры, создается первоначально отключенный сокет. Если параметры указаны, производится попытка подключиться к указанному узлу и порту.

Примечание. Настоятельно рекомендуется использовать форму конструктора без параметров, затем добавить любые прослушиватели событий, после чего вызвать метод connect с параметрами host и port. Эта последовательность гарантирует правильную работу всех приемников событий.

Параметры
host:String (default = null) — Полностью определенное имя домена DNS или IP-адрес в формате .222.333.444. В приложении Flash Player 9.0.115.0 и AIR 1.0 и более поздней версии можно задать IPv6- адреса, например rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]. Также можно указать null, чтобы подключиться к серверу узла, на котором размещен рассматриваемый SWF-файл. Если SWF-файл, инициирующий данный вызов, запущен в web-браузере, то в параметре host должен указываться тот же домен, в котором находится SWF-файл.
 
port:int (default = 0) — Номер TCP-порта на целевом узле, используемый для установки подключения. Для Flash Player 9.0.124.0 и более поздних версий на целевом узле должен быть файл политик для сокетов, разрешающий подключения к сокетам через указанный порт для узла, на котором размещен SWF-файл. Для более ранних версий Flash Player файл политик для сокетов является обязательным, только если требуется подключиться к порту с номером ниже 1024 или если SWF-файл находится не на том узле, к которому выполняется подключение.

Связанные элементы API

Сведения о методе

close

()метод
public function close():void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Закрывает подключение, заданное объектом XMLSocket. Событие close отправляется только в тот момент, когда сервер закрывает соединение. Оно не отправляется при вызове метода close().

Связанные элементы API

connect

()метод 
public function connect(host:String, port:int):void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Создает подключение к заданному узлу в Интернете на указанный порт TCP.

Если для параметра host указать значение null, то обращение производится к тому узлу, на котором размещен файл, вызывающий метод XMLSocket.connect(). Например, если вызывающий файл загружен с www.adobe.com, то использование значения null для параметра host указывает на то, что вы подключаетесь к сайту www.adobe.com.

Можно запретить использование файлом этого метода путем установки параметра allowNetworking для тегов object и embed на странице HTML, содержащей SWF-содержимое.

Для получения дополнительной информации см. раздел центра разработчиков Flash Player Безопасность.

Параметры

host:String — Полностью определенное имя домена DNS или IP-адрес в формате 111.222.333.444. Также можно указать null, чтобы подключиться к серверу узла, на котором размещен рассматриваемый SWF-файл. Если вызывающим файлом является SWF-файл, выполняющийся в web-браузере, то в параметре host должен указываться тот же домен, в котором находится SWF-файл.
 
port:int — Номер TCP-порта на целевом узле, используемый для установки подключения. Для Flash Player 9.0.124.0 и более поздних версий на целевом узле должен быть файл политик для сокетов, разрешающий подключения к сокетам через указанный порт для узла, на котором размещен SWF-файл. Для более ранних версий Flash Player файл политик для сокетов является обязательным, только если требуется подключиться к порту с номером ниже 1024 или если SWF-файл находится не на том узле, к которому выполняется подключение.


События
securityError:SecurityErrorEvent — Операция подключения предприняла попытку подключения к узлу за пределами изолированной программной среды безопасности вызывающего компонента или к порту, для которого требуется файл политик для сокетов. Устранить эту проблему можно с использованием файла политик для сокетов на целевом узле.
 
data:DataEvent — Отправляется после получения необработанных данных.
 
connect:Event — Отправляется после установления сетевого подключения.

Выдает
SecurityError — Локальные ненадежные файлы изолируются от Интернета. Можно устранить это ограничение, если переклассифицировать файл как локальный с сетевым подключением или доверенный.
 
SecurityError — Нельзя указывать номер порта сокета выше 65535.

Связанные элементы API

send

()метод 
public function send(object:*):void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Преобразует объект XML или данные, заданные параметром object, в строку, за которой следует нулевой байт (0), и передает ее на сервер. Если в качестве object используется XML-объект, строка является представлением XML-объекта в формате XML-текста. Операция отправки проходит в асинхронном режиме. Результат возвращается сразу же, но сами данные могут передаваться чуть позже. Метод XMLSocket.send() не возвращает значение, определяющее, успешно ли прошла передача данных.

Если вы не подключите объект XMLSocket к серверу с помощью XMLSocket.connect()), произойдет сбой операции XMLSocket.send().

Параметры

object:* — XML-объект или другие данные, которые необходимо передать на сервер.


Выдает
IOError — Объект XMLSocket не подключен к серверу.

Связанные элементы API

Сведения о событии

close

Событие
Тип объекта события: flash.events.Event
свойство Event.type = flash.events.Event.CLOSE

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляется, когда сервер закрывает подключение к сокету. Событие close отправляется только в тот момент, когда сервер закрывает соединение. Оно не отправляется при вызове метода XMLSocket.close().

Константа Event.CLOSE определяет значение свойства type объекта события close.

Это событие имеет следующие свойства:

СвойствоЗначение
bubblesfalse
cancelablefalse; поведение по умолчанию, подлежащее отмене, не определено.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetОбъект, для которого разорвано подключение.

connect

Событие  
Тип объекта события: flash.events.Event
свойство Event.type = flash.events.Event.CONNECT

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляется после успешного вызова метода XMLSocket.connect().

Константа Event.CONNECT определяет значение свойства type объекта события connect.

Это событие имеет следующие свойства:

СвойствоЗначение
bubblesfalse
cancelablefalse; поведение по умолчанию, подлежащее отмене, не определено.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetОбъект Socket или XMLSocket, установивший сетевое подключение.

data

Событие  
Тип объекта события: flash.events.DataEvent
свойство DataEvent.type = flash.events.DataEvent.DATA

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляется после отправки или получения необработанных данных.

Определяет значение свойства type объекта события data.

Это событие имеет следующие свойства:

СвойствоЗначение
bubblesfalse
cancelablefalse; поведение по умолчанию, подлежащее отмене, не определено.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
dataНеобработанные данные, загружаемые в Flash Player или Adobe AIR.
targetОбъект XMLSocket, получающий данные.

ioError

Событие  
Тип объекта события: flash.events.IOErrorEvent
свойство IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции отправки или получения.

Задает значение свойства type для объекта события ioError.

Это событие имеет следующие свойства:

СвойствоЗначение
bubblesfalse
cancelablefalse; поведение по умолчанию, подлежащее отмене, не определено.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
errorIDСсылочный номер, связываемый с конкретной ошибкой (только AIR).
targetСетевой объект, с которым произошла ошибка ввода/вывода.
textТекст, отображаемый в качестве сообщения об ошибке.

securityError

Событие  
Тип объекта события: flash.events.SecurityErrorEvent
свойство SecurityErrorEvent.type = flash.events.SecurityErrorEvent.SECURITY_ERROR

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляется, если вызов метода XMLSocket.connect() инициирует попытку подключения к серверу за пределами изолированной среды вызывающего объекта, или к порту с номером, меньшим чем 1024.

Константа SecurityErrorEvent.SECURITY_ERROR определяет значение свойства type для объекта события securityError.

Это событие имеет следующие свойства:

СвойствоЗначение
bubblesfalse
cancelablefalse; поведение по умолчанию, подлежащее отмене, не определено.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetСетевой объект, сообщающий об ошибке безопасности.
textТекст, отображаемый в качестве сообщения об ошибке.

Связанные элементы API

XMLSocketExample.as

В следующем примере класс XMLSocketExample используется для отправки данных с помощью XMLSocket и печати информации во время событий XMLSocket. Это можно сделать, выполнив следующие действия:
  1. Конструктор XMLSocketExample создает экземпляр XMLSocket под именем socket и передает значение socket методу ConfigureListeners() (см. описание ниже), а затем вызывает метод connect() XMLSocket, используя имя узла localhost и номер порта 8080.
  2. Затем вызывается метод configureListeners(), добавляющий прослушивателей для каждого поддерживаемого события XMLSocket:
    • closeHandler(): находится в ожидании события close, которое отправляется после закрытия сетевого подключения.
    • connectHandler(): находится в ожидании события connect, отправляется при установке сетевого подключения.
    • dataHandler(): находится в ожидании событий data, отправляется каждый раз, когда XMLSocket получает новые данные.
    • progressHandler(): находится в ожидании событий progress, отправляется после вызова send() и в процессе отправки.
    • securityErrorHandler(): находится в ожидании событий securityError, которые отправляются при выявлении попытки доступа к XMLSocket с применением неправильной настройки безопасности локального воспроизведения или при использовании номера порта ниже 1024.
    • ioErrorHandler(): находится в ожидании событий ioError, которые могут возникнуть только при сбое операции по отправке или получению данных.

Примечания.

  • SWF-файл требуется откомпилировать с установленным для параметра «Безопасность локального воспроизведения» режимом «Доступ только к сети».
  • Для того чтобы этот пример работал, вам необходим сервер, запущенный в вашем домене и использующий порт 8080.
  • Если используется Flash Player 9.0.124.0 или более поздняя версия на сервере необходимо поместить файл политик для сокетов, разрешающий для вашего домена подключения к сокетам через порт 8080. Сведения о размещении файлов политик сокетов см. в разделе Центра разработки Flash Player: Setting up a socket policy file server (Настройка сервера с файлом политик для сокетов).

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.XMLSocket;

    public class XMLSocketExample extends Sprite {
        private var hostName:String = "localhost";
        private var port:uint = 8080;
        private var socket:XMLSocket;

        public function XMLSocketExample() {
            socket = new XMLSocket();
            configureListeners(socket);
            if (hostName && port) {
                socket.connect(hostName, port);
            }
        }

        public function send(data:Object):void {
            socket.send(data);
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.CLOSE, closeHandler);
            dispatcher.addEventListener(Event.CONNECT, connectHandler);
            dispatcher.addEventListener(DataEvent.DATA, dataHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        }

        private function closeHandler(event:Event):void {
            trace("closeHandler: " + event);
        }

        private function connectHandler(event:Event):void {
            trace("connectHandler: " + event);
        }

        private function dataHandler(event:DataEvent):void {
            trace("dataHandler: " + event);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }
    }
}




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.