保持用户连接的最佳设计/方式是什么?

Sin*_*ton 9 c# silverlight wcf design-patterns polling

我正在进行自我学习的POC,我想让我的用户以LIVE模式连接.例如,一个游戏,其中4个用户可以一次玩,这里我需要让这个用户连接到我的游戏.

我不擅长Socket类型的编程,喜欢在服务方式中做到这一点.我知道的是"这样做的最佳方法是什么".根据我最初的Brain Storming,我已经决定使用SilverLight(在浏览器中或浏览器外)作为前端[我没有问题].

我更关注后端.要么我做一个处理程序或制作WCF服务或使用全双工服务并使用池化机制.作为一个随机的想法,我提出了一个Timer类型的逻辑,它将在客户端结束后每10秒钟触发一次并获得状态

  • 现在轮到掷骰子了

  • 家里有很多用户离开(如果他们中的一些人离开了)

  • 什么是游戏中的连接用户状态,例如得分/分数等,并
    根据此结果更新游戏视图

请在这里找到最好的答案,这将有助于我学习这一点.

致敬和提前感谢

编辑:

由于我需要更多反馈,因此开始赏金.

FH

Ram*_*Vel 11

Fasih,

由于HTTP是无状态的,因此您无法通过代码进行双向通信.但如果您使用的是AJAX,则有一种解决方法.正如你所说,计时器是单向的.另一个称为COMET或反向AJAX.

这模拟了双向通信,而不依赖于计时器.要实现此目的,您必须对服务器进行长时间运行的AJAX调用,并且只有在更新发生更改时才会返回调用.假设简单的网络聊天场景.2个用户对服务器进行长时间的AJAX调用,并且两者都轮询公共媒体(比如DB),如果user1发送了一些文本,它将得到更新,用户2正在等待的AJAX调用接收文本并返回.并且两个用户将再次进行长时间通话以互相倾听.

由于您已决定继续使用silverlight,因此您可以使用WCF双工通道来模拟双向通信.正如我之前解释的那样,不要使用计时器逻辑.如果您在服务器上轮询10秒(在10秒内任何事情都可能在游戏中发生),它就不是即时的,如果您每秒轮询一次,它将增加服务器负载.

因此,避免使用计时器逻辑并使用长时间运行的AJAX调

如果您正在寻找WCF双工通道以外的选项,HTML5网络套接字和COMET是其他方法.

查看这篇文章,了解支持web socokets的浏览器.