基于PHP的转向网页游戏 - 通信问题

时间:2010-08-14 18:44:02

标签: php communication

我正在开发一个基于回合制的PHP5网页游戏。

这是一款非常简单的游戏,一种棋盘游戏:两个人加入“会话”,他们一直玩,直到其中一人获胜。

我的问题简而言之:

  • 用户A和用户B玩游戏。

  • 用户A轮到他了

  • 请求将被发送到服务器以执行必要的操作。
  • 现在是时候让用户B移动..

但我怎么能通知用户B这个?

我的意思是,现在服务器必须与其他用户(非活动用户)进行通信,而不是发起请求的用户。

我知道这可以使用某种定期的AJAX调用来实现,该调用可以检查对手是否完成了他的回合等,但这样的事情会产生大量的请求。

难道没有更好的方法来解决这个问题吗?

我在考虑这样的事情:

  • 用户A的回合结束
  • 服务器保存他的分数
  • 服务器联系人用户B
  • 用户B开始了。

这是否可能以某种方式使用PHP和彗星风格的请求?或者有更好的方法吗?

任何帮助将不胜感激!

提前致谢!

2 个答案:

答案 0 :(得分:2)

当前正在运行的游戏/转弯的内存数据库,以及每1.5秒左右用户B的一次检查,不会真正生成巨大的数量的请求或服务器负载。< / p>

根据适合您游戏的内容,您甚至可以拥有7s,5s,3s,2s,1s,1s等轮询方案。

如果转弯完成时你只是touch会话文件,你甚至可以完全退出PHP,并检查最后修改过的客户端。

答案 1 :(得分:0)

Php套接字!

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
[...]