| Пакет | flash.net |
| Класс | public class XMLSocket |
| Наследование | XMLSocket EventDispatcher Object |
| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
- 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 | ||
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
| timeout : int
Указывает время ожидания подключения в миллисекундах. | XMLSocket | ||
| Метод | Определено | ||
|---|---|---|---|
Создает новый объект XMLSocket. | XMLSocket | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | |
Закрывает подключение, заданное объектом XMLSocket. | XMLSocket | ||
Создает подключение к заданному узлу в Интернете на указанный порт TCP. | XMLSocket | ||
![]() |
Посылает событие в поток событий. | EventDispatcher | |
![]() |
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | |
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | |
Преобразует объект XML или данные, заданные параметром object, в строку, за которой следует нулевой байт (0), и передает ее на сервер. | XMLSocket | ||
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object | |
![]() |
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher | |
| Событие | Сводка | Определено | ||
|---|---|---|---|---|
![]() | [многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | ||
| Отправляется, когда сервер закрывает подключение к сокету. | XMLSocket | |||
| Отправляется после успешного вызова метода XMLSocket.connect(). | XMLSocket | |||
| Отправляется после отправки или получения необработанных данных. | XMLSocket | |||
![]() | [многоадресное событие] Отправляется, когда проигрыватель 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):voidXMLSocket | () | Конструктор |
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: — Операция подключения предприняла попытку подключения к узлу за пределами изолированной программной среды безопасности вызывающего компонента или к порту, для которого требуется файл политик для сокетов. Устранить эту проблему можно с использованием файла политик для сокетов на целевом узле.
| |
data: — Отправляется после получения необработанных данных.
| |
connect: — Отправляется после установления сетевого подключения.
|
Выдает
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.
Это событие имеет следующие свойства:
| Свойство | Значение |
|---|---|
bubbles | false |
cancelable | false; поведение по умолчанию, подлежащее отмене, не определено. |
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.
Это событие имеет следующие свойства:
| Свойство | Значение |
|---|---|
bubbles | false |
cancelable | false; поведение по умолчанию, подлежащее отмене, не определено. |
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.
Это событие имеет следующие свойства:
| Свойство | Значение |
|---|---|
bubbles | false |
cancelable | false; поведение по умолчанию, подлежащее отмене, не определено. |
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.
Это событие имеет следующие свойства:
| Свойство | Значение |
|---|---|
bubbles | false |
cancelable | false; поведение по умолчанию, подлежащее отмене, не определено. |
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.
Это событие имеет следующие свойства:
| Свойство | Значение |
|---|---|
bubbles | false |
cancelable | false; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Сетевой объект, сообщающий об ошибке безопасности. |
text | Текст, отображаемый в качестве сообщения об ошибке. |
Связанные элементы API
- Конструктор XMLSocketExample создает экземпляр XMLSocket под именем
socketи передает значениеsocketметодуConfigureListeners()(см. описание ниже), а затем вызывает методconnect()XMLSocket, используя имя узла localhost и номер порта8080. - Затем вызывается метод
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);
}
}
}
Tue Jun 12 2018, 11:34 AM Z
Скрыть унаследованные общедоступные свойства
Показать унаследованные общедоступные свойства