Использование класса XMLSocket

ActionScript имеет встроенный класс XMLSocket, позволяющий вам устанавливать непрерывные соединения с сервером. Сокет-соединение позволяет серверу передавать информацию клиенту как только она становится доступной. Без непрерывного соединения сервер должен ожидать HTTP запрос. Такое соединение устраняет проблемы латентности и используется в основном для создания приложений реального времени, таких как чаты. Данные, передаваемые через сокет-соединения, преобразуются в одну строку и должны быть в формате XML. Вы можете использовать класс XML, чтобы структурировать данные нужным образом.

Чтобы создать сокет-соединение, you must создать серверное приложение, ожидающее сокет-запросов и отвечающее на них. Такие серверные приложения могут быть написаны на таких языках, как, например, Java.

Замечание: Класс XMLSocket не может работать через Firewall, в отличие от протокола RTMP, XMLSocket не может работать с HTTP туннелированием. Если вам необходимо использовать HTTP туннелирование, вам следует использовать Flash Remoting или Flash Communication Server (поддерживающий RTMP).

Вы можете использовать методы connect() и send() класса XMLSocket для передачи XML данных серверу и от сервера через сокет-соединение. Метод connect() устанавливает сокет-соединение через серверный порт. Метод send() передает серверу, с которым установлено сокет-соединение, XML объект.

При вызове метода connect(), Flash Player открывает TCP/IP соединение с сервером и оставляет его открытым пока не произойдет одно из следующих событий:

* Вызван метод close() класса XMLSocket.
* Больше не существует ссылок на объект XMLSocket.
* Flash Player закрывается.
* Соединение разорвано (например, модемное соединение разорвалось).

Нижеследующий пример создает XML socket соединение и отправляет данные из XML объекта myXML. Для понимания скрипта прочтите комментарии (обозначены //):

1.
// Создаем объект XMLSocket
2.
var theSocket:XMLSocket = new XMLSocket();
3.
// Подключаемся к серверу используя порт больше 1024 при помощи метода connect()
4.
// Введите localhost или 127.0.0.1 для локального тестирования
5.
// Для существующего сервера можно указать домен в виде www.yourdomain.com
6.
theSocket.connect("localhost", 12345);
7.
// Отображаем текст в зависимости от результата соединения
8.
theSocket.onConnect = function(myStatus) {
9.
if (myStatus) {
10.
conn_txt.text = "Соединение прошло успешно";
11.
} else {
12.
conn_txt.text = "Соединение не было установлено";
13.
}
14.
};
15.
// Данные для отправки
16.
function sendData() {
17.
var myXML:XML = new XML();
18.
var mySend = myXML.createElement("thenode");
19.
mySend.attributes.myData = "someData";
20.
myXML.appendChild(mySend);
21.
theSocket.send(myXML);
22.
}
23.
// Кнопка, отправляющая данные
24.
sendButton.onRelease = function() {
25.
sendData();
26.
};
27.
// Выводим данные, возвращенные сокет-сервером
28.
theSocket.onData = function(msg:String):Void {
29.
trace(msg);
30.
};