да можно и простым ПХП что бы не мучатся сильно.... раз в 20-30 секунд отправлять запрос на то, создан ли бой с тобой или нет...

PHP код:
DEFINE('TIME_USER',60); // Время активности пользователя (сек.)
DEFINE('TIME_BATTLE',60); // Время жизни непринятого сражения (сек.)
// Подгружаем модуль с функциями
require_once('func.php');
check_auth(); // Проверяем авторизан-ли пользователь
db_open(); // Открываем соединение с базой данных
$time_start = getmicrotime(); // Вычисляем время, чтобы показать время генерации странички
// Удаляем устаревшие записи о сражениях, время жизни которых истекло
$dtime = time() - TIME_BATTLE;
//db_query('DELETE FROM game_battle WHERE lasttime < '.AP.$dtime.AP.';');
// Получаем всю информацию о пользователе
db_query('SELECT * FROM game_user WHERE pass='.AP.$my['pass'].AP.' LIMIT 1;');
$my = db_fetch();
if(empty($my)){goto_error('Пользователь не найден в базе!');}
// Обновляем время последнего посещения для пользователя
db_query('UPDATE game_user SET lasttime='.AP.time().AP.' WHERE pass='.AP.$my['pass'].AP.' LIMIT 1;');
//преход если был принят бой другим игроком
db_query('SELECT * FROM game_battle WHERE (user1='.$my['id'].' OR user2='.$my['id'].') LIMIT 1;');
$battle = db_fetch();
if(!empty($battle))
{
// db_query('SELECT * FROM game_user WHERE id='.$battle['user1'].' LIMIT 1;');
// $battle['user1'] = db_fetch();
// Получаем доп. информацию о втором игроке
// db_query('SELECT * FROM game_user WHERE id='.$battle['user2'].' LIMIT 1;');
// $battle['user2'] = db_fetch();
if(($battle['user1'] == $my['id'])&($battle['user2']!=0))
{
if($battle['user1enter']==0)
{
db_query('DELETE FROM Hend WHERE id='.$my['id'].'');
db_query('UPDATE game_battle SET user1enter="1" WHERE user1='.$my['id'].' LIMIT 1;');
redirect('battle.php');
}else
{redirect('battle.php');
}
}
if(($battle['user2'] == $my['id'])&($battle['user1']!=0))
{
if($battle['user2enter']==0)
{
db_query('UPDATE game_battle SET user2enter="1" WHERE user2='.$my['id'].' LIMIT 1;');
redirect('battle.php');
}else
{redirect('battle.php');}}
}
// Если пользователь создал сражение
if(isset($_GET['add_battle']))
{
if($my['health'] > 0) // Нельзя открыть битву, если нет здоровья
{
// Добавляем в таблицу запись о новой битве
db_query('INSERT INTO game_battle VALUES("auto_increment",'.AP.$my['id'].AP.',"0",'.AP.time().AP.',"0","0");');
redirect('game.php'); // Обновим страничку
}
}
// Если пользователь принял чье-то сражение
if(isset($_GET['get_battle']))
{
// Обновляем запись о сражении
db_query('UPDATE game_battle SET user2='.$my['id'].' WHERE id='.$_GET['get_battle'].' LIMIT 1;');
db_query('UPDATE game_battle SET user2enter="1" WHERE id='.$my['id'].' LIMIT 1;');
redirect('battle.php'); // Переходим в сражение
}
// Получаем список сражений
$dtime = time() - TIME_BATTLE;
$cnt = 0;
db_query('SELECT * FROM game_battle;');
while($battle = db_fetch())
{
$cnt++;
// Получаем доп. информацию о первом игроке
db_query('SELECT * FROM game_user WHERE id='.$battle['user1'].' LIMIT 1;');
$battle['user1'] = db_fetch();
// Получаем доп. информацию о втором игроке
db_query('SELECT * FROM game_user WHERE id='.$battle['user2'].' LIMIT 1;');
$battle['user2'] = db_fetch();
// Выясняем, принят бой или нет
if($battle['user2'] == 0)
{
$dtime = TIME_BATTLE-(time()-$battle['lasttime']);
echo $cnt.' - Бой открыт: ';
echo $battle['user1']['name'].' (осталось '.$dtime.' сек.)';
if($battle['user1']['id'] != $my['id'])
{
// Нельзя принять бой, который создал ты сам
echo ' - <a href="game.php?get_battle='.$battle['id'].'">Принять бой</a> <br>';
}
}else{
echo $cnt.' - Бой начался: ';
echo $battle['user1']['name'].' vs. ';
echo $battle['user2']['name'].'<br>';
}
}
ну и тд....