Пакет | 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):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: — Операция подключения предприняла попытку подключения к узлу за пределами изолированной программной среды безопасности вызывающего компонента или к порту, для которого требуется файл политик для сокетов. Устранить эту проблему можно с использованием файла политик для сокетов на целевом узле.
| |
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