可以使用观察者模式在网络上提供即时通知吗?

时间:2011-12-01 15:36:16

标签: asp.net-mvc-3 design-patterns observer-pattern

假设你有一个简单的骰子游戏。它在网上播放。玩家1滚动,然后玩家2.需要一些机制来通知玩家轮到他们。由于web无状态,基于pull的性质,解决方案似乎不如Windows应用程序明显。

  • 一种方法是定期轮询服务器。 >,<

MS谈到active MVC。基本上它是应用观察者模式的MVC。所以,游戏本身就是“主题”而玩家1,玩家2是观察者。

观察员可以用作网上即时通知的解决方案吗?

2 个答案:

答案 0 :(得分:3)

Here是实现双向通信技术的一个很好的总结:

  • 彗星
  • 长轮询
  • 闪存
  • 网络套接字
  • Java Applets
  • 浏览器插件
  • 外部申请
  • 其他方法:ActiveX,Silverlight,Orbited

你是对的,玩家会观察比赛状态。一个长期举行的民意调查将让玩家知道轮到谁以及其他游戏状态信息。

答案 1 :(得分:1)

我们正在使用长期等待的HTTP请求来实现类似的功能。你做的是你在服务器上做一个HTTP请求,在客户端设置loong超时(比如10分钟)。在服务器处理程序中,对事件触发的某个同步对象执行WaitOne(serverTimeout)的超时(8分钟)更短一点 - 并在事件发生或超时到期时立即返回答案。

使用AsyncController进行此类查询非常方便。