flashdocs.net: все о macromedia flash 5, mx, 2004 pro, 8. Обучение: flash статьи flash уроки flash исходники flash софт, faq, а также flash мульты и flash игры
Итак, мы узнали, как можно передать данные серверной программе и получить от нее ответ. Теперь мы можем создавать свои собственные системы анкетирования посетителей своего Web-сайта, почтовые сервера, электронные магазины и пр. Осталось только написать серверное приложение, которое будет обрабатывать данные, но это выходит за рамки настоящей книги.
А теперь давайте выясним, как происходит пересылка данных серверному приложению. Распишем этот процесс по шагам.
1. Приложение Flash, отправляющее данные, устанавливает сетевое соединение с Web-сервером.
2. Приложение Flash отправляет данные серверному приложению через Web-сервер.
3. Web-сервер подтверждает принятие данных.
4. Приложение Flash разрывает сетевое соединение с Web-сервером. Передача данных закончена.
Точно так же серверное приложение (через Web-сервер) передает ответ приложению Flash.
He будем рассматривать обратную передачу. Поговорим о
другом.
Способ передачи, рассмотренный нами выше, годится для отправки данных серверной программе, осуществляющей обработку анкет или покупательской "корзины". Сетевое соединение устанавливается на короткий промежуток времени, необходимый только для передачи данных в одну сторону, и после этого разрывается.
Но иногда между клиентским и серверным приложениями требуется организовать продолжительный обмен информацией. Такое может понадобиться, например, при организации системы сетевой "болтовни" (или "чата", от английского chat), когда текстовые сообщения посылаются постоянно от сервера клиенту и от клиента серверу. Если для передачи каждого сообщения создавать, а потом разрывать сетевое соединение, сильно пострадает быстродействие системы, что вряд ли понравится любителям почесать языки. Поэтому в таких случаях устанавливается постоянное сетевое соединение, которое будет открыто столько времени, сколько нужно.
Flash для поддержки постоянных сетевых соединений предоставляет объект XMLSocket. С помощью этого объекта вы можете открывать постоянное соединение, закрывать его, когда оно станет ненужным, передавать и принимать через него данные.
Данные по постоянному соединению, как вы уже поняли, передаются в виде документа XML. Для создания документа XML используется уже знакомый вам объект xml, экземпляр которого вы должны создать и "заполнить" необходимыми данными.
И еще. Для прямого сетевого обмена нужны особые серверные приложения. Эти приложения работают сами по себе, а не под управлением Web-сервера, Вопросы написания таких приложений рассмотрены в соответствующей литературе.
Для организации постоянного сетевого соединения между клиентским приложением Flash и серверной программой нужно, прежде всего, создать экземпляр объекта XMLSocket.
myXMLSocket =new XMLSocket();
Чтобы открыть соединение, используйте метод connect. Формат этого метода таков:
<Экземпляр объекта XMLSocket>.connect(<Интернет-адрес>, <Порт>) ;
Первым параметром передается интернет-адрес - внимание! - сервера, на котором работает серверное приложение. Вы также можете передать в качестве параметра null для соединения с сервером, откуда был загружен файл с приложением Rash. Вторым параметром передается номер порта - своеобразного виртуального канала, по которому передаются данные. Всего доступно 65535 портов, но Flash может использовать для создания постоянных соединений только порты с номерами 1024 и выше.
Метод connect возвращает true, если создание постоянного соединения успешно начато. В противном случае возвращается false.
myXMLSocket.connect("socket.site.ru", 2048);
Сразу после установления постоянного соединения наступает событие connect. Функция-обработчик этого события должна принимать один логический параметр. Если этот параметр равен true, то соединение успешно установлено, и можно начинать обмен. Если же он равен false, удача отвернулась от вас.
myXMLSocket.onConnect = function(success) {
if (success) {
gotoAndStop(chat);
} else { gotoAndStop(error);
}
}
Для отправки данных используйте метод send. В качестве единственного параметра этого метода передается ссылка на экземпляр объекта xml, содержащего нужные данные.
myXMLSocket.send(myXML);
Сразу после приема данных от серверной программы наступает событие xml. Функция-обработчик этого события должна принимать единственный параметр - ссылку на экземпляр объекта xml, содержащего информацию, принятую от серверной программы.
Для закрытия постоянного соединения вам нужно вызвать метод close. Этот метод не принимает параметров.
myXMLSocket.close ();
Постоянное соединение может быть также разорвано серверной программой. Другие причины разрыва постоянного соединения: авария сети, ошибки в программном обеспечении и др. Для того чтобы корректно обработать разрыв соединения, объект XMLSocket предоставляет событие close.