Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   crossdomain.xml и сокет-сервер на AIR (http://www.flasher.ru/forum/showthread.php?t=173150)

chingachgook 25.12.2011 13:28

crossdomain.xml и сокет-сервер на AIR
 
Кто-нибудь писал сокетный сервер на AIR? У меня загвоздка с отправкой crossdomain.xml клиентской флешке. Сервер (приложение на AIR) запущено локально, т.е. в домене localhost. Флешка находится на вебстранице, в домене mysite.ru. При попытке подключиться флешка как положено отправляет <policy-file-request />, air-сервер как положено отвечает:

Код AS3:

 
var s:String = ''
+ '<?xml version="1.0"?>'
+ '<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">'
+ '<cross-domain-policy>'
+ '<allow-access-from domain="127.0.0.1" to-ports="8888" />'
+ '<allow-access-from domain="localhost" to-ports="8888" />'
+ '<allow-access-from domain="mysite.ru" to-ports="8888" />'
+ '</cross-domain-policy>'
;                       
clientSocket.writeUTF(s);

Но флешплеер удалённой флешки в ответ закрывает соединение, видимо ему не нравится то что он получил. В policyfiles.txt никаких ошибок не появляется, только строчка: OK: Root-level SWF loaded: app:/logreader2.swf
(logreader2.swf это имя swf'ки моего air приложения).

Что я делаю не так?

alatar 25.12.2011 14:21

Цитата:

Что я делаю не так?
Документацию не дочитываете. После получения crossdomain клиент (рекомендуется и на сервере) закрывает соединение и открывает заново, уже без запроса crossdomain (если клиенту не нравится crossdomain, то возникнет SecurityError).

t4arty 25.12.2011 14:30

про нулевой байт забыли (хотя в аир он не нужен, неизвестно :))

chingachgook 25.12.2011 16:54

Оказалось, что клиент получает SECURITY_ERROR. Т.е. дело не в том что он должен реконнектнуться - у него с первого раза всё плохо.
Сделал чтобы сервер отсылал ноль после строки - без изменений:
Код AS3:

clientSocket.writeUTF(s);
clientSocket.writeByte(0);
clientSocket.flush();

Anybody?

alatar 25.12.2011 17:13

Флешка находится на mysite.ru или на www.mysite.ru?
На какой порт конектится флешка, с какого порта отдаются политики?
Что в SECURITY_ERROR?

chingachgook 25.12.2011 17:31

Вот SECURITY_ERROR: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
Никакого www, порт один и тот-же - сервер видит соединение и получает запрос политики.
В руте сайта лежит crossdomain.xml, в нём прописано всё что только можно (хотя не уверен что на сокеты он влияет).

alatar 25.12.2011 17:32

Цитата:

В руте сайта лежит crossdomain.xml, в нём прописано всё что только можно (хотя не уверен что на сокеты он влияет).
Не влияет.

ChuwY 25.12.2011 17:34

Попробуйте для начала разрешить все порты. потом уже перекроетесь.
И рвите соединение сами с сервера после отправления файла политики.
И попробуйте сначала отладить локально. В дебаговом режиме должны запрашиваться файлы политики.

Nikolay00700 19.01.2012 12:28

У меня подобная проблема, только сокет-сервер Java. сервер получает запрос, отправляет файл политики, а флеш его не получает...

Если бы проблема была в том, что порты закрыты, то как бы тогда сервер получил от клиента файл запроса???


Часовой пояс GMT +4, время: 15:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.