Проблема связи между гнездами Flex и Erlang - PullRequest
0 голосов
/ 29 июня 2011

Я создаю клиент-серверную игру. Мой клиент - игра на основе Flex, а мой сервер - сервер Erlang. В начале, когда я непосредственно тестирую свой Flex-клиент во Flash Player, я могу легко установить соединение с моим сервером Erlang через сокет-соединение. И оба могут обмениваться данными без проблем.

Проблема возникает, когда я развертываю свое flex-приложение на http-сервере Apache и запускаю его с помощью браузера, вызывая http://localhost/ ... мой flex-сокет отправляет сообщение с просьбой о междоменной политике на мой сервер erlang.

Поэтому я создаю сообщение xml, представляющее междоменную политику, и отправляю его обратно в мое гибкое приложение в качестве ответа на этот запрос.

Тем не менее, я все еще не могу установить постоянное сокетное соединение между моим flex-клиентом и моим сервером erlang. Я знаю это, потому что я добавляю слушателя на свой гибкий сокет, который изменит свое внутреннее состояние на CONNECTED, если установлено соединение между клиентом и сервером.

Ответы [ 2 ]

0 голосов
/ 29 июня 2011

Flashplayer ограничивает использование вашего сокета несколькими способами. Один вы уже выяснили :) Другой - указать, используете ли вы сеть или нет. Существует сетевой режим и режим файловой системы (доступ к файловой системе). Вы не можете иметь оба.

Таким образом, вы должны попытаться скомпилировать это с:

-use-network=true

И да, я знаю, что PITA занимается программированием сокетов со вспышкой. Вы должны реализовать каждый метод OnErrorXYZ и распечатать как можно больше информации. Использование wireshark или другого сетевого анализатора также является хорошей идеей.

0 голосов
/ 29 июня 2011

Я не испытывал проблемы, но, возможно, это поможет.

Файл политики по умолчанию называется crossdomain.xml и находится в корневом каталоге сервера, который обслуживает данные ... Вы можете использовать метод loadPolicyFile () для доступа к файлу политики не по умолчанию.

http://livedocs.adobe.com/flex/3/html/help.html?content=deployingoverview_12.html

Файл политики, обслуживаемый сервером XMLSocket, имеет тот же синтаксис, что и любой другой файл политики, за исключением того, что он также должен указывать порты, к которым осуществляется доступпредоставляется.Когда файл политики приходит с порта ниже 1024, он может предоставить доступ к любым портам;Когда файл политики приходит с порта 1024 или выше, он может предоставить доступ только к другим портам 1024 и выше.

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005403.html

...