2010-06-11 85 views
4

我想创建使用ASPX和Ajax的互动网站,会有创造棋例如与其他玩家游戏厅就能加入一个选项。创建一个互动网站

我有2个问题:

  1. 我不知道你有什么想法,我怎么可以让一个玩家点击一个按钮后,结束轮到他时,其他玩家将能够做的举动。

的第一个球员后完成轮到他,我会通过使用数据库更改之交,但问题是我怎么能刷新其他玩家的网站,所以当对方一个完成轮到他时,又将来到第二个球员?

  1. 当有人创建房间而不是关闭浏览器时 - 我需要关闭该房间。 我应该使用Session_OnEnd关闭他打开的房间吗?

谢谢!

回答

1

我不知道,如果你有任何想法如何能 我作出这样的后 一个玩家点击一个按钮,完成轮到他时, 其他玩家将能够做一个 举动。

有很多的方法可以做到这一点。如果是我,我会有一个“移动”数据库表或其他东西,并跟踪它移动的位置。然后在页面上有SetInterval() javascript方法,该方法使用ajax服务查看该“移动”表并确定它何时转到用户。

当有人创建了一个房间,比 关闭他的浏览器 - 我需要那个房间 被关闭。我应该使用 Session_OnEnd关闭他打开的房间 ?

您可以使用Session_OnEnd。作为替代方案,您可以使用ajax方法检查moves表以查看用户何时x分钟未检入,然后关闭其会话。

+0

所以我需要每秒使用SetInterval()方法来检查它现在在移动表中的用户轮到了吗? ,因为转弯持续时间有变化 - 当使用者完成他的转弯或直到每轮转弯的最大时间。 – 2010-06-11 15:45:13

+0

我会让延迟时间稍长一秒,但是这是一般的想法。如果时间需要改变,你可以很容易地在ajax服务中执行这些规则。 – 2010-06-11 15:51:42

+0

为什么你会让它稍长于1秒(我想你的意思是说约2-3秒)? – 2010-06-11 18:42:20

0
  1. 最简单的方法可能是在每个客户端上做一个简单的心跳/轮询,看看他/她是否还在。尽管如今,推/彗星变得越来越容易和简单。

  2. 如果你已经在使用轮询/心跳技术,这将是微不足道后关闭会话,比方说,5个错过心跳。

+0

您的意思是在每个客户端上创建计时器,每秒钟检查转向状态?它不会减慢网站速度,因为每秒都有一个新的数据库连接? 以及如何创建该计时器?你能给我这个计时器的名字,或给我一篇关于这个计时器的文章,所以我将学习如何使用它? 谢谢 – 2010-06-11 15:32:10

+0

你能解释一下你说的什么推/彗星? – 2010-06-11 15:33:44

+0

push/comet是用于替代轮询/心跳的技术的同义词。它旨在通过长时间创建一个连接而不是每隔几秒建立一个新连接来减少轮询开销http://en.wikipedia.org/wiki/Push_technology – Puddingfox 2010-06-14 15:07:27