Проблема с файлом политики для Flash / AS2 - PullRequest
0 голосов
/ 22 февраля 2010

Я уже несколько дней пытаюсь установить соединение между моим flash-клиентом и java-сервером, но у меня возникли проблемы с сервером политики сокетов.

Я прочитал много информации в Интернете (включая руководство Adobe о том, как ее создать), но все равно не могу подключить ее, кроме как в опции «Тестировать ролик» в CS3.

Источник для клиента и сервера довольно длинный, поэтому я просто попытаюсь объяснить, что они делают.

ОК, поэтому в основном я получаю запрос на <policy-file-request/> на своем java-сервере, затем отправляю «<cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>» (пробовал множество других xml-файлов), за которым следует нулевой символ (но держите соединение открытым, попытался закрыть это - все еще не работало). Однако, похоже, что флэш-клиент все еще пытается подключиться в течение 10 секунд, прежде чем сдаться.

Я также настроил мини-веб-сервер внутри java-сервера, который обслуживает веб-страницу на том же порту при отправке запроса в стиле http, и это, похоже, работает, поэтому это не может быть переадресация портов выпуск.

Я также попробовал сервер порта 843 на примере Adobe, который все еще не работал. При доступе к html-файлу в firefox / safari я могу вручную подтвердить соединение, и оно работает.

Я прочитал, что crossdomain.xml не требуется для сокетного соединения, но тем не менее экспериментировал.

Как вы думаете, где я могу пойти не так?

1 Ответ

0 голосов
/ 28 ноября 2010

хорошо, я не использую Java, но я могу предложить две отправные точки.

Во-первых, проверьте, есть ли проблема с заменой двойных кавычек (") на конфигурации домена и порта. I.e: В VB мы действительно можем использовать chr (34) для этого. Посмотрите:

sock.SendData "<cross-domain-policy><allow-access-from domain=" & Chr(34) & "*" & Chr(34) & "to-ports=" & Chr(34) & "50505" & Chr(34) & "/></cross-domain-policy>" & Chr(0)

Во-вторых, отслеживая мое приложение, я обнаружил, что флеш-плеер «отключается» и восстанавливает соединение после получения ответа для своего файла политики. Итак, последовательность такая:

Сервер получает запрос с msg "policy-file-request /" Сервер отвечает на файл политики тогда ... это отключает (!) (?) затем снова подключается (автоматически)

Хитрость в VB, мы должны закрыть сокет в событии sock_Close (), например:

Private Sub sock_Close()
sock.Close                          ' has to be called
sock.Listen                         ' listen again

End Sub

Надеюсь, это поможет.

...