Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   XMLSocket. Какие могут быть причины не возможности соединится с XML-сервером (http://www.flasher.ru/forum/showthread.php?t=117576)

jazzz_man 30.10.2008 18:16

XMLSocket. Какие могут быть причины не возможности соединится с XML-сервером
 
Господа, имеется следующий наистандартнейший код на AS2
Код:

vHost = "127.0.0.1";
vPort = 2345;
System.security.loadPolicyFile("http://"+vHost+"/crossdomain.xml");
var xsConnection:XMLSocket = new XMLSocket();


var bConnected:Boolean = xsConnection.connect(vHost,Number(vPort));

xsConnection.onConnect = function(bSuccess:Boolean):Void
{
        if(bSuccess)
        {
                trace("Успешное соединение с сервером ");
                                       
        }
        else
        {
                trace("Не могу соединиться с сервером ");
               
        }
}
xsConnection.onClose = function () {
    trace("Connection to server lost.");

}
xsConnection.onData = function(sData:String):Void
{
///обработка XML
}

Публикую эту флэшку с опцией Access network only
На сервере (apache) находится файл crossdomain.xml в корне (http://127.0.0.1/crossdomain.xml)
Код:

<?xml version="1.0">
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
        <allow-access-from domain="*" to-ports="2345"  />
</cross-domain-policy>

При запуске на сервере ХТМЛ файла из которого загружается эта флэшка происходит считывание пресловутого crossdomain.xml файла политики это видно из логов:
Код:

127.0.0.1 - - [30/Oct/2008:17:51:39 +0500] "GET /interfaces/interface.swf HTTP/1.1" 200 273860
127.0.0.1 - - [30/Oct/2008:17:51:39 +0500] "GET /interfaces/interface.ini HTTP/1.1" 304 -
127.0.0.1 - - [30/Oct/2008:17:51:39 +0500] "GET /crossdomain.xml HTTP/1.1" 304 -

НО СОЕДИНИТСЯ C XML-СЕРВЕРОМ(127.0.0.1:2345) ВСЕ РАВНО НЕ ПОЛУЧАЕТСЯ (происходит временная установка (на 1сек)
и последующий разрыв соединения). При запуске тойже самой ХТМЛ локально все работает (соединение, обмен данными).
В чем может быть подвох? :wacko:

(PS пробовал экспериментировать с кодировкой crossdomain.xml - не помогло)

laurisgutmanis 30.10.2008 18:44

Вроде все правильно
Сам сервер не может обрывать?

jazzz_man 31.10.2008 11:59

исключено. Думаю сама флэшка рвЕт соединение. Как бы проверить меняется ли политика доступа в самой флэшке после считывания crossdomain.xml?

Добавлено через 10 минут
исключено. Думаю сама флэшка рвЕт соединение. Как бы проверить меняется ли политика доступа в самой флэшке после считывания crossdomain.xml?

INK• 31.10.2008 16:36

тут мне когда то такое присоветовали.
1. открываем ноутпад
2. ставляем туды такой текст
Код:

CLS
ECHO OFF
ECHO Registering JobTest SWF Folder in FlashPlayer Security Trust Folder...
ECHO %CD% > "%APPDATA%\Macromedia\Flash Player\#Security\FlashPlayerTrust\JobTest%RANDOM%.cfg"
ECHO Done. Please restart your Browser if it launched.
PAUSE
EXIT

3. сохраняем.
4. переиминувуем в .BAT
5. запускаем.

laurisgutmanis 31.10.2008 20:15

Цитата:

Сообщение от jazzz_man (Сообщение 774008)
исключено. ...меняется ли политика доступа в самой флэшке после считывания crossdomain.xml?

Может для начала попробывать просто:
Код:

System.security.allowDomain("*"); //при условии что >8 flash
А? Работает ли?:confused:

Цитата:

Сообщение от INK• (Сообщение 774093)
...
3. сохраняем.
4. переиминувуем в .BAT
5. запускаем.

А смысл локально?
Он же не будет всем посетителям такое писать?! :rtfm:

jazzz_man 01.11.2008 21:44

Скачал с сайта Флэш плеер с дебагером - вот ссылочка
http://kb.adobe.com/selfservice/view...4266&sliceId=1
(как настроить подробно описано здесь http://www.adobe.com/devnet/flashpla...ing_and_Fixing)
смотрю в логах
Код:

OK: Root-level SWF loaded: http://localhost/interfaces/interface.swf
OK: Policy file accepted: http://127.0.0.1/crossdomain.xml
OK: Searching for <allow-access-from> in policy files to authorize data loading from resource at xmlsocket://127.0.0.1:2345 by requestor from http://localhost/interfaces/interface.swf[
Error: Request for resource at xmlsocket://127.0.0.1:2345 by requestor from http://localhost/interfaces/interface.swf has failed because the server cannot be reached.

теперь становиться ясно в чем загвоздка. Сама флэшка пытается считать политику безпасности с xmlsocket://127.0.0.1:2345 . А если я хочу чтобы флэшка считывала политику безопасности только 80 порта. Или если я работаю с сокетом, то политику безопасности нужно передавать с него же?

Добавлено через 5 минут
System.security.allowDomain("*"); тоже прописал, но как видно из предыдущей мессаги дело не в этом ))

INK• 02.11.2008 13:05

я тут недавно исполнил пару поделок на SmartFoxServer.
давно не работал с сокетными серверами..

Так вот. SmartFoxServer присылает crossdomain прям при попытке конекта.
Попробуйте малость можифицировать свой сокет сервер.

jazzz_man 03.11.2008 15:16

Спасибо, помогло. Использую только один порт, на котором работает XMLSocket. При подключении на этот порт flash присылает <cross-domain-policy> запрос, в ответ отсылаем текст из crossdomain.xml с 0. Разрывать соединение необязательно т.к. флешка сама разрывает соединение получив политику безопасности.
ЗЫ. Для себя вывел такое правило обязательно запускать флэш в режиме отладки, т.к. при любой ошибке (описке) в crossdomain.xml флэшка ни в какую не хочет соединяться с сервером.

ЗЗЫ. Привожу алгоритм настройки флэш плеера с дебагером (напоминаю, плеер с дебагером лежит здесь
http://kb.adobe.com/selfservice/view...4266&sliceId=1 ), для тех кому лень читать ману на аглицком:
Отредактировать( или если такого файла нет то создать) mm.cfg конфигурационный файл.
Этот файл должен находится здесь:

Windows: C:\Documents and Settings\username

Windows Vista: C:\Users\username

Macintosh: /Users/username

Linux: /home/username
Для ведения логов добавить в этот файл mm.cfg следующие строки

PolicyFileLog=1 # Enables policy file logging
PolicyFileLogAppend=1 # Optional; do not clear log at startup

Лог-Файл называется policyfiles.txt, и находится он в директории:

Windows: C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\Logs

Windows Vista: C:\Users\username\AppData\Roaming\Macromedia\Flash Player\Logs

Macintosh: /Users/username/Library/Preferences/Macromedia/Flash Player/Logs

Linux: /home/username/.macromedia/Flash_Player/Logs


Часовой пояс GMT +4, время: 02:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.