Не удается подключиться к серверу с AS3.0 XMLSocket - PullRequest
0 голосов
/ 07 февраля 2010

У меня есть сервер, который я написал на Python, и я пытаюсь подключиться к нему через XMLSocket Flash. Я точно знаю, что этот сервер работает должным образом, поскольку я успешно использовал его с несколькими клиентскими приложениями, отличными от Flash. Сейчас я просто хочу подключиться к удаленному серверу с SWF-файлом, который находится на моем локальном диске. Насколько я понимаю, это означает, что мне не нужен файл политики безопасности, поскольку SWF-файл не находится в другом домене. Я также подтвердил, что свойство изолированной программной среды безопасности файла установлено на локальное доверие, поэтому SWF-файл должен иметь возможность подключаться к серверам и получать с них данные. Вот важный код из файла AS:

var xmlSocket:XMLSocket = new XMLSocket();
public function MainLogic() {
    xmlSocket.addEventListener(DataEvent.DATA, onDataReceived);
    xmlSocket.connect('XXX.XXX.XXX.XXX', XXXX);
}
public function onDataReceived(event:DataEvent):void {
    helloText.text = 'data received'
}

Сервер запрограммирован на отправку строки 'hello \ 0', как только будет установлено соединение. Но если это происходило успешно, то текст по умолчанию в динамическом текстовом поле должен быть заменен строкой «данные получены», чего не происходит. Возможно ли, что мне все еще нужен файл политики, даже если SWF-файл является локальным?

Ответы [ 3 ]

1 голос
/ 07 февраля 2010

Убедитесь, что вы добавили в прослушиватели все возможные события ошибок , которые позволят отгадать много догадок. Я бы порекомендовал изменить пример с liveocs , чтобы проверить это. Они создали эти события:

xmlSocket.addEventListener(Event.CLOSE, closeHandler);
xmlSocket.addEventListener(Event.CONNECT, connectHandler);
xmlSocket.addEventListener(DataEvent.DATA, dataHandler);
xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
xmlSocket.addEventListener(ProgressEvent.PROGRESS, progressHandler);
xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
0 голосов
/ 08 февраля 2010

Я разместил этот вопрос с незарегистрированной учетной записью, поэтому не могу выбрать лучший ответ или комментарий, но в основном добавление обработчиков событий работало отлично. Это оказалось ошибкой безопасности, поэтому проблема могла быть в файле политики. Однако я обнаружил, что гораздо более простое решение - просто изменить настройки флеш-плеера, чтобы всегда разрешать доступ к сети для определенных папок или файлов. Я изменил настройки на этом сайте: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

0 голосов
/ 07 февраля 2010

Я бы пошел со стратегией грейпфрукта, чтобы увидеть, какую ошибку вы получаете.

Я предполагаю, что это ошибка безопасности. Я думаю, что вам всегда нужен файловый сервер политики при попытке подключения через сокеты.

...