![]() |
xmlsocket
Всем привет. ни как не получается соединяться с сокетом через флеш клинкета, вот такая ошибочка выходит, если компелировать на компе.
Error #2044: Необработанный ioError:. text=Error #2031: Ошибка сокета. at XMLSocketExample() Чуть позже вот это Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: file:///C|/Documents%20and%20Settings/moiseev/Рабочий%20стол/1/Безымянный%2D1.swf не может загрузить данные из :8080. at XMLSocketExample() если запускать с веб сервера денвер никаких ошибок, только надпись Соединение не установлено. фаил политики безопасности сокетов выглядит так. я его размещаю в корневой папке. PHP код:
Код AS3:
исправил код, прослушал события. но соединение все равно не происходит ( Код AS3:
|
Не важно, где вы размещаете файл. Он (crossdomain.xml) не используется для xmlsocket. Текст данного файла должен отдаваться на запрос по xml-socket'у (и только по нему!). Ну плюс еще мелочи вроде завершающего нулевого байта и закрытия соединения. Так что правьте ваш сокет-сервер.
Добавлено через 31 секунду Уточню. Не на любой запрос. А на запрос <policy-file-request/> |
2 razerw
Принцип подключения через сокет из флеша таков: 1. Клиентский сокет (флеш) стучится к серверному сокету по порту 843 2. Серверный сокет подключает клиентский и встает на прослушку 3. Клиентский сокет отправляет строку <policy-file-request/> 4. Серверный сокет, получив ее, отправляет в ответ текст вашего полиси-файла. 5. Клиентский сокет, получив его, закрывается. 6. Клиентский сокет стучится к серверу вновь по тому порту, который разрешен в полиси-файле 7. Серверный сокет подключается и встает на прослушку. 8. Все, соединение установлено, можно обмениваться данными через сокеты. п 1 - 6 с клиентского сокета выполняются автоматически (флеш делает все сам при connect). Обеспечить чтобы действия правильно выполнял серверный сокет - ваша задача. как правильно указывает вам maxkar, полиси-файл это не тоже самое, что кроссдомен. То, что в нем должно быть, смотрите в хелпе. |
Ничего подобного в мануале я не нашел. там лиш приводится тот код который я выложил и то без загрузки политик сокета. а так же без прослушивания событий. Может быть есть рабочий живой пример структуры кода на ас3 клиента?
|
А на клиенте все нормально вроде бы. Максимум - не тот порт может быть указан. Это абсолютно точно проблемы на сервере. У меня есть полный пример клиента и сервера.
|
2 razerw
Еще раз по вашим ошибкам: 1. Вы получаете Error #2044: Необработанный ioError потому, что сокет не может осуществить подключение на п. 7 (алгоритм, что я приводил выше) 2. Вы получаете Error #2044: Необработанный securityError:. потому, что в п.1-4 ваш клиентский сокет не получил адекватного полиси-файла. 3. Отсюда делаем вывод: проверяем сервер на предмет отдачи им полиси-файла по 843 порту. Когда сервер научится отдавать файл политики правильно, вы сможете осуществить подключение. Ну, а вот мануалы по клиентской стороне: В конце приводится общий пример подключения http://help.adobe.com/ru_RU/FlashPla...XMLSocket.html Про файл политики (см. "подключение к сокетам") http://help.adobe.com/ru_RU/ActionSc...8a9b90204-7c63 |
то есть код моего клиента корректный?
Я так понял понял вот эта строка вообще лишняя Код AS3:
И кстати сокет сервер реализован на php я так понял это вообще не подходит для этой концепции? |
2 razerw
Эта строчка ( Security.loadPolicyFile("xmlsocket://localhost:1028"); ) нужна только если ваш сервер отдает полиси-файл по порту 1028 а не по дефолтному 843. Сокет сервер должен отдать файл политики только один раз при подключении. Когда сервер получает строку <policy-file-request/> он должен отдать полиси-файл. Если подключение прошло, больше он этой строки не получит и соотв-но не отдаст полиси-файл. Не важно на чем реализован сервер. Важно, как он выполняет свои задачи. В php есть все для создания сервера, значит сервер на нем вполне имеет право быть. |
Спасибо за подсказки. Они меня стимулируют гыы) и есть определенный успех! Сервер слушает 843 порт, после активности на порту отправят код политики. И появилась проблема в том что я не знаю как просматривать запросы между сервером и клиентом. Может быть есть какие то проги? Юзал прогу Charles, но к сожалению она только показывает команды echo.
|
2 razerw
Программы есть, но я ими не пользовался. Мне было достаточно вывода в консоль на сервере и трейса во флеше. Просто вариантов не так много. Вы получаете секурити еррор, если трабла с политикой и и-о еррор если трабла с подключением. Если не получено никаких ошибок, значит все работает :) |
| Часовой пояс GMT +4, время: 12:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.