0

首先,我正在使用标准 ASP.NET 网站创建类似于客户端/服务器解决方案的东西——我知道不建议使用这种方法,大多数人都喜欢尖叫“COMET!” 或“HTML5 套接字!” - 但请不要;-)!

我在做什么...

我正在网站上创建 MMORPG。

我有几个客户需要同时联系。这是由 Application 范围内的全局对象完成的。

我的问题

我需要向多个客户调用一个事件。例如,当攻击被执行时,我需要更新一些图形。攻击逻辑在全局对象中解析,但每个客户端都必须对此做出响应。

现在我执行以下操作:

   fightTrace.Reciever.InvokeMoveEnded(this);
   fightTrace.FiredBy.InvokeMoveEnded(this);

(这是一种观察者模式)

现在发生的是竞争条件。加载 page_load 事件的人将获得这两个事件,而未运行它们的人将不会在 UI 中经历任何变化。

那么我真正想要的是什么?

我真正需要的是通过应用程序状态创建观察者模式的一些真正而好的方法。我需要向每个“侦听器”发送一个事件,在这种情况下是一个客户端,然后进行一些更新。

做到这一点的一种方法是一些会话的东西,真/假..但我真的想要一些更好的方法!

谢谢!

4

1 回答 1

0

如果我正确理解了您的上下文,那么每当您的应用程序状态对象的状态发生更改时,您都希望同步应用程序的所有客户端。您在这里忘记的是 HTTP 协议的无状态行为。一旦发送响应,连接就会丢失,您需要再次发送 HTTP 请求才能再次获得服务。但是,您可以使用基于状态管理和 Ajax 的简短及时更新来模拟一些东西,以模拟连接的环境。但是我不得不说出你不想听到的话。不建议。

相反,您可以做的是保存应用程序对象的状态,并在请求到来时根据对象的更新状态提供响应。客户端必须如何发起请求。

于 2011-02-15T15:32:20.130 回答