Не удается подключиться к серверу с AS3.0 XMLSocket
У меня есть сервер, который я написал на 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 ответа
Убедитесь, что вы добавили в прослушиватели все потенциальные события ошибок, которые избавят вас от отладки. Я бы порекомендовал изменить пример с 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);
Я разместил этот вопрос с незарегистрированной учетной записью, поэтому не могу выбрать лучший ответ или комментарий, но в основном добавление обработчиков событий работает отлично. Это оказалось ошибкой безопасности, поэтому проблема могла быть в файле политики. Однако я обнаружил, что гораздо более простое решение - просто изменить настройки флеш-плеера, чтобы всегда разрешать доступ к сети для определенных папок или файлов. Я изменил настройки на этом сайте: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
Я бы пошел со стратегией грейпфрукта, чтобы увидеть, какую ошибку вы получаете.
Я предполагаю, что это ошибка безопасности. Я думаю, что вам всегда нужен файловый сервер политики при попытке подключения через сокеты.