Пошаговая веб-игра на PHP - проблема общения - PullRequest
1 голос
/ 14 августа 2010

Я работаю над пошаговой веб-игрой на PHP5.

Это довольно простая игра, своего рода настольная игра: два человека присоединяются к "сеансу" и играют до тех пор, пока один из них не выиграет.

Моя проблема в двух словах:

  • Пользователь A и пользователь B. играют в игру.

  • Пользователь A закончил свой ход

  • Запрос будет отправлен на сервер для выполнения необходимых операций.
  • Теперь настало время для перемещения пользователя B ..

Но как я мог уведомитьПользователь B об этом?

Я имею в виду, что теперь сервер должен общаться с другим пользователем, который является неактивным, а не с тем, который инициировал запрос.

Я знаю, что это моглобыть реализован с использованием некоторого периодического вызова AJAX, который проверяет, закончил ли противник свой ход и т. д., но такая вещь генерирует огромное количество запросов.

Нет ли лучшего способа решить эту проблему?

Я думаю о чем-то вроде этого:

  • Ход пользователя A заканчивается
  • Сервер сохраняет свой счет
  • Контакты сервера Пользователь B
  • Начинается ход пользователя B.

Возможно ли это как-то с использованием запросов в стиле PHP и комет?Или есть лучший способ сделать это?

Любая помощь будет признательна!

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 14 августа 2010

База данных в памяти, в которой запущены игры / ходы и одна проверка пользователя B каждые 1,5 секунды или около того, на самом деле не будет генерировать огромное количество запросов или нагрузку на сервер.

Вы можете даже иметь схему опроса, такую ​​как 7s, 5s, 3s, 2s, 1s, 1s и т. Д., В зависимости от того, что подходит вашей игре.просто touch файл сеанса всякий раз, когда выполняется ход, и проверьте последнюю модифицированную сторону клиента.

0 голосов
/ 14 ноября 2010

Php Sockets!

http://php.net/manual/en/book.sockets.php

server listen
client_a connect
client_b connect
client_a send start game to server
client_a send move to server
server send play client_b
[...]
...