【问题标题】:Creating an interactive website创建交互式网站
【发布时间】:2010-06-11 15:17:02
【问题描述】:

我想创建一个使用 aspx 和 ajax 的交互式网站,例如可以选择创建国际象棋游戏室,其他玩家也可以加入。

我有 2 个问题:

  1. 我想知道您是否知道如何让一个玩家点击一个按钮并完成他的回合后,另一个玩家将能够移动。

在第一个玩家完成回合后,我将使用数据库更改回合,但关键是如何刷新其他玩家的站点,以便当另一个玩家完成回合时,轮到第二个玩家?

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

谢谢!

【问题讨论】:

    标签: asp.net ajax interactive


    【解决方案1】:

    我想知道你是否知道如何 我在一个玩家点击后做 一个按钮并完成他的回合, 其他玩家将能够做一个 移动。

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

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

    您可以使用Session_OnEnd。作为替代方案,您可以使用检查 moves 表的 ajax 方法来查看用户何时没有在 x 分钟内检查,然后关闭他们的会话。

    【讨论】:

    • 所以我需要每秒使用 SetInterval() 方法来检查现在是否轮到用户进入移动表?因为转弯持续时间会发生变化 - 当用户完成他的回合时或直到每个回合的最大时间。
    • 我会让延迟比每秒一次长一点,但是是的,这是一般的想法。如果时间需要改变,您可以很容易地在 ajax 服务中强制执行这些规则。
    • 你为什么要让它长于 1 秒(我猜你的意思是大约 2-3 秒)?
    • 您永远不知道向服务器发出请求并返回需要多长时间。再给它一点时间,比如 5 秒,可以确保请求已经完成。真的,您需要对其进行测试,看看它是如何工作的。
    【解决方案2】:
    1. 最简单的方法可能是对每个客户端进行简单的心跳/轮询,看看是否轮到他/她。不过,如今 push/comet 变得越来越容易了。

    2. 如果您已经在使用轮询/心跳技术,那么在错过 5 次心跳之后关闭会话将很容易。

    【讨论】:

    • 你的意思是在每个客户端上创建一个计时器来每秒检查一次转弯状态吗?它不会因为每秒都有一个与数据库的新连接而减慢网站速度吗?以及如何创建该计时器?你能给我这个计时器的名字或者给我一篇关于这个计时器的文章,这样我就可以学习如何使用它了?谢谢
    • 你能解释一下你所说的推/彗星是什么吗?
    • push/comet 是用于替代轮询/心跳的技术的同义词。它旨在通过长时间只创建一个连接而不是每隔几秒创建一个新连接来减少轮询的开销en.wikipedia.org/wiki/Push_technology
    • 还有一种称为 Web 套接字的技术仍在开发中——en.wikipedia.org/wiki/Web_Sockets。我不知道有什么好的教程。我从未使用过网络套接字或推送自己,但我使用过轮询,它不是最有效或最干净的解决方案。
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多