Форум 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 не всегда работает (http://www.flasher.ru/forum/showthread.php?t=90298)

borzih 08.01.2007 00:56

XMLSocket не всегда работает
 
Делается чат. Серверная часть на PHP, клиентская на Flash. Вот небольшой тестовый код клиентской части:

Код:

//*********************************
// Обработчики событий
//*********************************

// Вызываетется в момент создания соединения
function myOnConnect(success) {
  if (success) trace("OK 1");
  else trace("ERROR 1");
}

// Вызывается при получении какого-либо сообщения от сервера
function answer(str) {
  trace("answer: "+str);
}

// Вызывается при разрыве соединения
function xxx() {
  trace("die!!!");
}

//**********************************

socket = new XMLSocket()
socket.onConnect = myOnConnect;
socket.onData = answer;
socket.onClose = xxx;
       
if(socket.connect("gorodsnov.ru", 8080)) trace("OK 1");
else trace("Error 2");

socket.send("Hello, server!\n");

Протестирован примерно на 100 компьютерах. Примерно на 30 работать отказался, вызывая ошибку "ERROR 1" внутри функции myOnConnect(). Т.е. операция socket.connect проходит успешно, а вот при вызове обработчика события onConnect передается FALSE.

Ставятся задачи:
1. Определить причины, из-за которых нет коннекта.
2. Написать пользователям грамонтную инструкцию, что им надо сделать, чтобы чат работал.

Пример инструции:
1. Должен быть Flash Player такой-то версии.
2. В настройках Windows там-то, там-то отключить такой-то файрвол.
3. Вырубить такой-то такой-то прокси-сервер.
4. Не ставить такие-то такие-то программы интернет безопасности или поотрубать в них такие-то такие-то настройки.
5. Звякнуть интернет провайдеру и узнать у него, не блокирует ли он IP пакеты, адресованные в порт 8080.
.........

Вышесказанное написано "от балды". Сейчас надо поянть, из-за чего конкретно XMLSocket не работает на 30% компьютеров и как грамотно составить инструкцию для пользователей чата. Лично на моем домашнем компе код работает исправно и пока не нашлось ни одного способа, заставляющего его сломаться.

ПО каким наиболее распространенным причинам может не работать XMLSocket ???

Nirth 08.01.2007 01:41

Какая операционная система?

P.S. вы знаете что на PHP обычно не пишут сокет серверов =)?

borzih 08.01.2007 02:50

Цитата:

Сообщение от Nirth
Какая операционная система?

P.S. вы знаете что на PHP обычно не пишут сокет серверов =)?

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

Одну, достаточно частую, только что определил. Часть пользователей заходит на сайт без приставки www, а часть - с приставкой www. Внутри же Флэшки прописано что-то определенное (либо c www, либо без www). Политика безопасности не позволяет делать соединения на другие сайты (www и без www - разные сайты). Проблема решилась созданием файла crossdomain.xml.

Теперь стоит задача выявить другие причины, из-за которые клиентская часть может не работать. Чем больше, тем лучше :)

borzih 08.01.2007 02:56

P.S. После исправления ошибки "с WWW, без WWW" статистика стала существенно лучше. Тестовый скрипт работает примерно у 90% пользователей (ранее было лишь у 60%). Но я полагаю, можно и лучшего добиться, если поискать еще причины :)

Nirth 08.01.2007 03:19

Дубль два какие операционные системы?

etc 08.01.2007 04:24

Цитата:

Сообщение от borzih
Серверная часть работает исправно.

Абсолютно точно и категорически да?

borzih 08.01.2007 15:03

Цитата:

Сообщение от Nirth
Дубль два какие операционные системы?

На сервере FreeBSD 5.5, демон чата написан на PHP.
Пользователи чата - люди из мира с самыми разными операционками.

И в чём важность этого? И еще, любопытно, в чем недостатки демона, написанного на PHP? Какая разница на чем писать? PHP, C++, TCL и т.п. В любом случае пямяти расходуется немного, а в загрузке процессора - разница не очень большая. Зато на PHP и писать несложно, и с MySQL базой данных легко коннектиться :victory:

iNils 08.01.2007 16:18

Цитата:

Сообщение от borzih
И в чём важность этого? И еще, любопытно, в чем недостатки демона, написанного на PHP? Какая разница на чем писать? PHP, C++, TCL и т.п. В любом случае пямяти расходуется немного, а в загрузке процессора - разница не очень большая. Зато на PHP и писать несложно, и с MySQL базой данных легко коннектиться :victory:

Для начала набрать хотябы в яндексе "демон на php" и посмотреть, что про это люди пишут.

Iv 09.01.2007 21:04

возможно, что вторая по распространенности причина, это то, что закрыт порт 8080.
насколько я помню, наиболее эффективно это решалось использованием 80-го порта. но это не всегда возможно по техническим причинам.

Iv 09.01.2007 21:26

и еще:
если сокет не законнектился, то обычно бесполезно писать мануалы юзерам.
в таких случаях нужно просто переходить на HTTP запросы.


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

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