Pull to refresh

Flex3. Сокетные соединения (Socket connections) Часть 1

Reading time 3 min
Views 6.4K
Раньше здесь была другая статья, но я её случайно затёр. Приношу свои извинения тем кто попал на эту страницу в надежде найти здесь информацию по JQuery Dialog. Хотя, если копия не сохранилась в сети… Значит статья была так себе :)

Хочу предложить всем желающим мой перевод документа из официальной документации по Adobe Flex 3 — Socket connections (Сокетные соединения)

Вторая часть здесь Flex3. Сокетные соединения (Socket connections) Часть 2

Сокетные соединения


Существует два типа сокетных соединений доступных в Action Script 3.0: сокетные соединения XML (XML Sockets) и бинарные (двоичные) сокетные соединения. XML сокет позволяет подключиться к удалённому серверу и создать соединение которое будет оставаться открытым до тех пор пока оно явно не будет закрыто (Одним словом имитирует постоянное соединение с сервером). Это позволяет передавать XML данные между сервером и клиентом, без необходимости постоянно открывать новое соединение. Другое преимущество от использования сервера на основе XML сокетов, состоит в том что пользователю не нужно постоянно посылать запросы для получения данных с сервера. Для передачи данных с сервера вам не нужно дожидаться запроса от клиента, и вы можете немедленно разослать данные каждому клиенту подключенному к серверу.

Бинарные сокеты чем-то похожи на XML сокеты, и отличаются лишь тем, что для обмена данными между клиентом и сервером они не используют специальные XML пакеты. Вместо этого, данные передаются в двоичном (бинарном) виде.

Класс Socket

Представленный в ActionScript 3.0 класс Socket позволяет создавать сокет-соединение, для чтения и записи необработанных двоичных данных.
Он похож на класс XMLSocket, но не позволяет задавать формат получаемых и передаваемых данных. Класс Socket
полезен при взаимодействии с серверами которые использую бинарные (двоичные) протоколы. Используя соединения двоичных сокетов, вы можете написать код который позволял бы взаимодействовать по различным интернет протоколам, таким как POP3, SMTP, IMAP, и NNTP. А, это позволит Flash Player'у подключаться к почтовым и новостным серверам.

Класс Socket наследует все методы описанные в интерфейсах IDataInput и IDataOutput (находящиеся в пакете flash.utils), эти методы используются для чтения и записи из сокета.

Класс XMLSocket


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

Для создания сокет-соединения, необходимо создать серверное приложение (сервер, одним словом), которое будет ожидать запрос на соединение и возвращать ответ SWF приложению (файлу). Серверное приложение данного типа может быть написано с использование таких языков программирования как Java, Python или Perl. Для использования класса XMLSocket, на стороне сервера (компьютер-сервер) необходимо запустить демона (программу работающую в фоновом режиме) понимающего протокол который использует XMLSocket.

Требования предъявляемые к протоколу:
  1. XML сообщения посылаются в течение полного дуплекса TCP/IP потока сокет-соединения.
  2. Каждое XML сообщение должно являться полноценным XML документом, и завершаться нулевым байтом.
  3. В рамках одного сокет-соединения XML может быть принято и отправлено неограниченное кол-во XML сообщений.

Примечание: класс XMLSocket не может автоматически проложить туннель через файервол, поскольку, в отличие от Real-Time Messaging Protocol (RTMP) ( Протокол Сообщений Реального Времени), XML сокет не поддерживает HTTP туннелирование. Если вам нужно HTTP туннелирование, как вариант вместо XMLSocket можно использовать Flash Remoting и Flash Media Server (которые поддерживают RTMP).

Возможные ограничения при использовании XMLSocket при подключении к серверу:
  • XMLSocket.connect () может подключаться только к TCP порту номер которого больше или равен 1024. Одним из следствий этого ограничения является то, что демоны запущенные на сервере, и которые взаимодействуют с объектом XMLSocket также должны иметь номер порта больше или равна 1024. Порты с номерами ниже 1024 используется системой, для таких служб как FTP (21), Telnet (23), SMTP (25), HTTP (80) и POP3 (110), XMLSocket запрещено использовать номера этих портов по соображениям безопасности. Ограничение номера порта снижает возможность несанкционированного доступа к этим ресурсам.
Tags:
Hubs:
+8
Comments 9
Comments Comments 9

Articles