正在进行自我学习的POC,我想让我的用户以LIVE模式连接。例如,一个游戏,其中4个用户可以一次玩,这里我需要让这个用户连接到我的游戏。
M不擅长Socket类型的编程,并喜欢在服务方式中做到这一点。我知道的是'这样做的最佳方式是什么'。根据我最初的Brain Storming,我决定使用SilverLight(在浏览器中或浏览器外)作为前端[我没有问题]。
我在后端更关注。 要么我做一个处理程序或制作WCF服务或使用全双工服务并使用池化机制。作为一个随机的想法,我提出了一个Timer类型逻辑,它将在客户端结束后每隔10秒触发一次并获得状态,如
现在轮到掷骰子了
首页许多用户离开(如果是的话 其中一些人离开了)
什么是连接用户状态
游戏就像得分/分数等
更新
根据他的最终游戏视图
请在此处提供最佳答案,以帮助我了解这一点。
提前致意并表示感谢
修改
因为我需要更多反馈而启动Bounty。
FH
答案 0 :(得分:11)
Fasih,
由于HTTP是无状态的,因此您无法通过代码进行双向通信。但如果您使用的是AJAX,则有一种解决方法。正如你所说,计时器是单向的。另一个叫做COMET或反向AJAX。
这模拟了双向通信,而不依赖于计时器。要实现此目的,您必须对服务器进行长时间运行的AJAX调用,并且只有在更新发生更改时才会返回调用。假设简单的网络聊天场景。 2个用户对服务器进行长时间的AJAX调用,并且两者都轮询公共媒体(比如DB),如果user1发送一些文本,它将得到更新,用户2正在等待的AJAX调用接收文本并返回。而且两个用户都会长时间通话,互相倾听。
由于您已决定继续使用silverlight,因此您可以使用WCF双工通道来模拟双向通信。正如我之前解释的那样,不要使用计时器逻辑。如果您在服务器上轮询10秒钟(在10秒内任何事情都可以在游戏中发生),它就不是即时的,如果您每秒轮询一次,它将增加服务器负载。
因此,请避免使用计时器逻辑并使用长时间运行的AJAX调用。
如果您正在寻找WCF双工通道以外的选项,HTML5 web sockets和COMET是其他方法。
请查看此post以获取支持网络论坛的浏览器。
答案 1 :(得分:1)
基本上,这是一个能够从服务器向客户端推送数据的问题。 所以我认为是订阅者发布者体系结构,您可以在服务器上为每个连接的用户创建一个队列(在db表中为ex),并让ajax调用一个将从表中提取数据的Web服务。
每条消息都应该被封装为客户端的命令。因此,您可以为客户端能够执行的每个操作使用不同的消息。 {command:display,text:“user blah blah已登录”}另一个命令看起来像{command:rolldice,text:“roll the dice”}
让我知道你的想法...
答案 2 :(得分:1)