Web applications 基于浏览器的实时游戏

Web applications 基于浏览器的实时游戏,web-applications,Web Applications,我想实现一个支持大量成员并提供实时操作的bbg 我目前的游戏一直在运行,但它似乎很快就会耗尽 我使用的方法是轮询。我猜空闲用户的浪费会导致服务器烧坏(服务器是C#,客户端是Javascript) 我该如何解决这个问题呢?如果你想实时做出反应,轮询是不行的。您需要通过长时间运行的http连接或其他方式使用某种持久连接。(Comet)如果你想实时做出反应,轮询是不行的。您需要通过长时间运行的http连接或其他方式使用某种持久连接。(Comet)HTTP中的持久连接/轮询可能很棘手,正如您所指出的,效

我想实现一个支持大量成员并提供实时操作的bbg

我目前的游戏一直在运行,但它似乎很快就会耗尽

我使用的方法是轮询。我猜空闲用户的浪费会导致服务器烧坏(服务器是C#,客户端是Javascript)


我该如何解决这个问题呢?

如果你想实时做出反应,轮询是不行的。您需要通过长时间运行的http连接或其他方式使用某种持久连接。(Comet)

如果你想实时做出反应,轮询是不行的。您需要通过长时间运行的http连接或其他方式使用某种持久连接。(Comet)

HTTP中的持久连接/轮询可能很棘手,正如您所指出的,效率也不高。我建议迁移到支持服务器推送消息的基于插件的游戏。也许是因为它基本上是为游戏而设计的,但如果你想要更普遍的东西,那就用Flash吧


如果你真的想坚持使用HTML,一个混合的解决方案可能会起作用,通过插件传递消息并在响应上重写DOM。

HTTP中的持久连接/轮询可能会很棘手,正如你所指出的,效率也不高。我建议迁移到支持服务器推送消息的基于插件的游戏。也许是因为它基本上是为游戏而设计的,但如果你想要更普遍的东西,那就用Flash吧

如果你真的想坚持使用HTML,一个混合的解决方案可能会起作用,通过插件传递消息并在响应上重写DOM。

也许对你有用(比如Comet服务器)。它提供了一个简单的API,允许向网页发送推送通知。简言之,当您的数据更新时,将其(一些有效负载数据)发送到Goldfish服务器,您的客户端浏览器将收到通知,其中包含相同的数据

基于回合的游戏非常适合金鱼,不过根据您的设计,可能会使用更大的世界系统

免责声明:我是一名从事金鱼开发的开发人员。

也许对您有用(比如Comet服务器)。它提供了一个简单的API,允许向网页发送推送通知。简言之,当您的数据更新时,将其(一些有效负载数据)发送到Goldfish服务器,您的客户端浏览器将收到通知,其中包含相同的数据

基于回合的游戏非常适合金鱼,不过根据您的设计,可能会使用更大的世界系统


免责声明:我是金鱼的开发者。

你总是会有一些滞后。我不确定您是否正在轮询单个更新,但您可以查看以下操作,以降低延迟和密集的服务器资源:

  • 对所有更新进行一次轮询。不要在一次通话中调查“生命数”和在另一次通话中调查“位置”,而是在一次点击中完成

  • 由于更新较少,因此轮询较少。我经常在有很多更新的时候进行投票。当没有或更少的新更新时,我轮询的频率会降低

  • 最后,我会发送多个更新,并注明它们发生的时间。假设玩家x移动到5,5,然后攻击某人并移动到5,8。这将是三个不同的事件在一次民意测验中出现。前端将负责以对用户有意义的方式显示这些随时间的变化


我认为这不是最终的解决办法。这更多的是关于如何更好地处理轮询方面的建议。

您总是会有一些延迟。我不确定您是否正在轮询单个更新,但您可以查看以下操作,以降低延迟和密集的服务器资源:

  • 对所有更新进行一次轮询。不要在一次通话中调查“生命数”和在另一次通话中调查“位置”,而是在一次点击中完成

  • 由于更新较少,因此轮询较少。我经常在有很多更新的时候进行投票。当没有或更少的新更新时,我轮询的频率会降低

  • 最后,我会发送多个更新,并注明它们发生的时间。假设玩家x移动到5,5,然后攻击某人并移动到5,8。这将是三个不同的事件在一次民意测验中出现。前端将负责以对用户有意义的方式显示这些随时间的变化


我认为这不是最终的解决办法。这更多的是关于如何更好地处理轮询方面的建议。

我做了关于Comet的研究。但它似乎不能很好地处理多个请求。我想知道如何实现comet?我做过comet的研究。但它似乎不能很好地处理多个请求。我想知道如何实现comet?flash、silverlight、java和unity都应该满足您的需要。flash、silverlight、java和unity都应该满足您的需要。