C# · 12月 27, 2021

c# – 什么是最好的设计/方式来保持用户连接?

我在一个自我学习的POC上工作,我想让我的用户连接到LIVE模式.例如,一个4位用户可以一次玩的游戏,这里我需要保持这个用户连接到我的游戏.

M不好的Socket类型的编程和爱做在服务的方式.我知道的是“这是最好的方法是什么”.根据我最初的Brain Storming,我决定使用SilverLight(在浏览器中或浏览器中)作为前端[我没有问题].

我更关心后端.
我做一个处理程序或做一个WCF服务或使用全双工服务,并使用pooling机制.作为一个随机的想法,我想出了一个Timer类型的逻辑,将在客户端终止10秒后触发并获得状态

现在是轮到骰子了
家里许多用户离开(万一如果
其中一些离开)
>所连接的用户状态是什么
游戏像有分数/积分等等
更新
游戏视图根据他的这个结尾

请在这里给你最好的答案,这将有助于我学习.

感谢先生

编辑:

开始赏金,因为我需要更多的反馈.

FH

解决方法 Fasih,

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

这样就可以模拟双向通信而不依赖定时器.要完成此操作,您必须对服务器进行长时间运行的AJAX调用,并且只有在更新时才会返回该调用.假设简单的网络聊天场景. 2个用户对服务器进行了长时间的AJAX调用,并且都轮询通用介质(例如DB),如果user1发送一些文本,它将被更新,并且用户2的等待的AJAX调用接收文本并返回.而且两个用户再次进行长时间的呼叫来相互监听.

由于您已经决定使用silverlight,您可以使用WCF双工通道来模拟双向通信.正如我刚才所说,不要用定时器逻辑.如果您正在轮询服务器10秒(任何事情都可能发生在10秒内的游戏中),它不会立即进行,如果您每秒轮询,它将增加服务器负载.

所以避免定时器逻辑并使用长时间运行的AJAX调用.

如果您正在寻找除WCF双工通道以外的选项,则可以使用HTML5 web sockets和COMET等其他方式.

查看这个post的浏览器支持web socokets.