![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
|
Есть сервер, реализованный на php. Методы класса осуществляют доступ к базе и производят выборку.
Есть клиентская часть, реализованная на as3. Приложение представляет собой интерактивное взаимодействие графических объектов между клиентами и сервером. В тот момент, когда первый пользователь "подключается" к серверу и рисует геометрическую фигуру на поле, она должна отображаться на экране у второго, который так же подключен к серверу и загрузил эту же swf. После этого наоборот: когда второй рисует фигуру, первый должен ее увидеть. Координаты фигур (ходы) записываются в базу. Подскажите, как реализовать взаимодействие между клиентами и сервером! Была идея использовать следующее: в переменную записывается номер последнего хода, после запускается функция-слушатель, которая запускает запрос на получение максимального номера хода и сравнение его со значением переменной. Если неравенство, значит второй пользователь совершил ход, тогда первый пользователь снова может получать фокус. Но так вешается: private function mouseDownListener (e:MouseEvent):void { ... wait(); ... } public function wait():void{ parameter = "SELECT max(move_id) FROM move WHERE game_id="+last_non_fin_game_no; var variables:URLVariables = new URLVariables(); variables.qu = variableText; var request:URLRequest = new URLRequest("php_file_path"); request.data = variables; request.method = URLRequestMethod.POST; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, startCheckListener); loader.load(URLReq); } public function startCheckListener (e:Event):void { var myTimer:uint; while (last_move_no = loader.data) { myTimer = setTimeout(wait, 1000); } trace("Переход фокуса на другого игрока"); } Последний раз редактировалось deceiver; 23.08.2010 в 13:34. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ээээ, вы серьезно sql-запросы передаете прямо на сервер с клиента?
|
|
|||||
|
Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
|
Сказали, есть sql-инъекции, еще не смотрел (
Понимаю, варварство, дичь и ноль-седьмая ступень эволюции |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Для двусторонней связи вам сначала нужно отказаться от php и писать сокет-сервер.
|
|
|||||
|
Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
|
Благодарю, хотя бы вектор. Не влечет ли написание клиентской части для сокет-сервера использования пакетов flex (mx.*)?
Но в данный момент результаты запросов, какой это ни изврат, возвращаются корректно Последний раз редактировалось deceiver; 23.08.2010 в 18:28. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, не влечет, вам понадобиться класс Socket.
|
|
|||||
|
zuxul, там нету. Но подменить запрос - дело 15 секунд.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
|
Может RTMFP? кто-нибудь пробовал?
|
|
|||||
|
Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
|
Делаю подключение используя следующий шаблон: http://www.demiart.ru/forum/lofi/index.php/t138322;;лучше ничего не нашел
добавил новый файло с кодом клиента, прописал в главном файле связь с файлом Сокета: import Lib.SocketConnect; пришлось сделать пакет главного файла именованным, чтобы парс-чекер "проглотил" импортнутый код клиента; также сделал вызов переменной var socket:SocketConnect = new SocketConnect() соответственно в конструкторе главного файла. При отслеживании через отладку парс-чекер просто пропускает данную строчку, просто перемещаясь на следующие строки, также среда отображает ошибку в панели проекта, но в коде это нигде не отображается, только в панели, на которой отображаются списки файлов. Кто нибудь сталкивался с подобным? Также попутный вопрос: где ш тут в as-файле клиента осуществляется связь с php-файлом сервера? нигде не видно ссылки |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|