Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.08.2010, 19:48
deceiver вне форума Посмотреть профиль Отправить личное сообщение для deceiver Найти все сообщения от deceiver
  № 1  
Ответить с цитированием
deceiver

Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
По умолчанию Подключение 2-х клиентов к серверу

Есть сервер, реализованный на php. Методы класса осуществляют доступ к базе и производят выборку.
Есть клиентская часть, реализованная на as3. Приложение представляет собой интерактивное взаимодействие графических объектов между клиентами и сервером. В тот момент, когда первый пользователь "подключается" к серверу и рисует геометрическую фигуру на поле, она должна отображаться на экране у второго, который так же подключен к серверу и загрузил эту же swf. После этого наоборот: когда второй рисует фигуру, первый должен ее увидеть.
Координаты фигур (ходы) записываются в базу.
Подскажите, как реализовать взаимодействие между клиентами и сервером!
Была идея использовать следующее: в переменную записывается номер последнего хода, после запускается функция-слушатель, которая запускает запрос на получение максимального номера хода и сравнение его со значением переменной. Если неравенство, значит второй пользователь совершил ход, тогда первый пользователь снова может получать фокус. Но так вешается:

Код AS3:
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.
Старый 23.08.2010, 17:30
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ээээ, вы серьезно sql-запросы передаете прямо на сервер с клиента?

Старый 23.08.2010, 17:58
deceiver вне форума Посмотреть профиль Отправить личное сообщение для deceiver Найти все сообщения от deceiver
  № 3  
Ответить с цитированием
deceiver

Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
Сказали, есть sql-инъекции, еще не смотрел (
Понимаю, варварство, дичь и ноль-седьмая ступень эволюции

Старый 23.08.2010, 18:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Для двусторонней связи вам сначала нужно отказаться от php и писать сокет-сервер.

Старый 23.08.2010, 18:20
deceiver вне форума Посмотреть профиль Отправить личное сообщение для deceiver Найти все сообщения от deceiver
  № 5  
Ответить с цитированием
deceiver

Регистрация: Aug 2010
Адрес: Бобруйск
Сообщений: 20
Благодарю, хотя бы вектор. Не влечет ли написание клиентской части для сокет-сервера использования пакетов flex (mx.*)?
Но в данный момент результаты запросов, какой это ни изврат, возвращаются корректно


Последний раз редактировалось deceiver; 23.08.2010 в 18:28.
Старый 23.08.2010, 18:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, не влечет, вам понадобиться класс Socket.

Старый 23.08.2010, 18:33
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 7  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
В приведенном коде нет sql-инъекций, там почти полный доступ к базе

Старый 23.08.2010, 19:16
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
zuxul, там нету. Но подменить запрос - дело 15 секунд.

Старый 24.08.2010, 13:32
bebop вне форума Посмотреть профиль Отправить личное сообщение для bebop Найти все сообщения от bebop
  № 9  
Ответить с цитированием
bebop
 
Аватар для bebop

Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
Может RTMFP? кто-нибудь пробовал?

Старый 26.08.2010, 15:02
deceiver вне форума Посмотреть профиль Отправить личное сообщение для deceiver Найти все сообщения от deceiver
  № 10  
Ответить с цитированием
deceiver

Регистрация: 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:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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