|
|
|||||
Регистрация: Aug 2009
Сообщений: 75
|
Полиси файл для сокетов
Из справки адоби видно что просто взять crossdomain.xml для сокетов не получится:
Цитата:
Цитата:
|
|
|||||
843 это порт по умолчанию. Его можно принудительно запрашивать на другом порте, через xmlsocket, к примеру так:
Если же закрыто все, кроме 80, 443 и 8080, то, увы, на сокетах не получится
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
|
Не понимаю сути проблемы. Клиент подключаясь к серверу отправляет запрос вида '<policy-file-request/>\x00'
на который сервер может ответить вот так: после чего будет второе подключение без запроса policy file. |
|
|||||
Регистрация: Aug 2009
Сообщений: 75
|
Суть в том что подключение не состоится и дело до отправки '<policy-file-request/>\x00' не дойдёт, потому что закрыты порты на какой-либо из сторон или по дороге.
|
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Как реализовать:
Слушать сокет соединение (не crossdomain.xml забросить на веб сервер, а именно сокетный коннект слушать) по нужному порту и ждать от клиентов сообщение "<policy-file-request/>" в ответ всегда отправлять "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>" (нулевой байт в конце не забываем так как это xmlsocket) и закрыть соединение. Файл политики спрашивается при прямом сокет коннекте в трёх вариантах по очереди: 1. Сначала по 843 порту. Если рутовый доступ есть, то лучше его использовать, так как он первый спрашивается. Если нет ответа то 2. По указанному порту в Security.loadPolicyFile. Следует использовать в случаях когда не хочется смешивать два протокола xml-строковый (по которому общается политика) и например игровой бинарный. Если нет ответа то 3. По тому же порту которому устанавливается соединение. Самый простой, но минус в том что нельзя адекватно организовать очередь пакетов (по хорошему нужно делать, пакеты могут быть не полные) так как всегда будешь ожидать строку "<policy-file-request/>" для всех клиентов. Пример простого сокет серверного коннекта на AIR с двумя клиентами в виде игры крестики-нолики по третьему варианту. xo.zip по аналогии такой же сервер будет и на java, и на php, и на c# и на C++ Если всё правильно делать, то флеш плеер всегда спросит эти 3 варианта. если где то выдалось cross-domain-policy то законнектиться. По опыту скажу, что если есть возможность разделить web сервер (nginx, apache) и игровой сервер то лучше вешать на 80 порт, так как 80 у всех пользователей открыт (кроме пользователей которые через прокси сидят, с only http, тут уже ничего не поделаешь) Последний раз редактировалось Nooob; 19.07.2014 в 08:19. |
Часовой пояс GMT +4, время: 22:23. |
|
« Предыдущая тема | Следующая тема » |
|
|