Главная / Action Script 3
Пакетflash.net
Классpublic class XMLSocket
НаследованиеXMLSocket Inheritance EventDispatcher Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

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

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

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

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

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

Дополнительные сведения о безопасности см. в следующих ресурсах.

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

См. также

flash.net.URLLoader.load()
flash.net.URLLoader
Подключения к сокетам
Подключение к сокетам


Общедоступные свойства
 СвойствоОпределено
  connected : Boolean
[только для чтения] Определяет, подключен ли в настоящий момент данный объект XMLSocket.
XMLSocket
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : 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
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
  Отправляется, когда сервер закрывает подключение к сокету.XMLSocket
  Отправляется после успешного вызова метода XMLSocket.connect().XMLSocket
  Отправляется после отправки или получения необработанных данных.XMLSocket
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
  Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции отправки или получения.XMLSocket
  Отправляется, если путем вызова метода XMLSocket.connect() предпринимается попытка подключения к серверу, лежащему за пределами изолированной среды вызывающего объекта, или к порту с номером, меньшим 1024.XMLSocket
Сведения о свойстве
connectedсвойство
connected:Boolean  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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



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

См. также

timeoutсвойство 
timeout:int  [чтение и запись]

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

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

Если подключение не будет установлено в течение заданного срока, попытка завершается ошибкой. Значение по умолчанию 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
Версии среды выполнения:  1.0 9

Создает новый объект 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-файл, инициирующий данный вызов, запущен в веб-обозревателе, то в параметре host должен указываться тот же домен, в котором находится SWF-файл.
 
port:int (default = 0) — Номер TCP-порта на целевом узле, используемый для установки подключения. Для Flash Player 9.0.124.0 и более поздних версий на целевом узле должен быть файл политик для сокетов, разрешающий подключения к сокетам через указанный порт для узла, на котором размещен SWF-файл. Для более ранних версий Flash Player файл политик для сокетов является обязательным, только если требуется подключиться к порту с номером ниже 1024 или если SWF-файл находится не на том узле, к которому выполняется подключение.

См. также

Сведения о методе
close()метод
public function close():void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

См. также

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

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

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

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

Дополнительные сведения см. в следующих источниках.

Параметры

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


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

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

См. также

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

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

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

Параметры

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


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

См. также

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

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Отправляется, когда сервер закрывает подключение к сокету. Событие 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
Версии среды выполнения:  1.0 9

Отправляется после успешного вызова метода 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
Версии среды выполнения:  1.0 9

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

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

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
данныеНеобработанные данные, загруженные в Flash Player.
targetОбъект XMLSocket, получающий данные.
ioError Событие  
Тип объекта события: flash.events.IOErrorEvent
свойство IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

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

Данное событие имеет следующие свойства.

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

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

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

Данное событие имеет следующие свойства.

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

См. также

Примеры Как пользоваться примерами
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, которые могут возникнуть только при сбое операции по отправке или получению данных.

Примечания.


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);
        }
    }
}