gpt4 book ai didi

c# - 保持用户联系的最佳设计/方式是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:43:55 24 4
gpt4 key购买 nike

我正在开发一个用于自学的 POC,我想让我的用户以实时模式保持连接。例如,一个可以同时玩 4 个用户的游戏,这里我需要让这个用户连接到我的游戏。

我不擅长 Socket 类型的编程,喜欢以服务方式进行编程。我想知道的是“这样做的最佳方式是什么”。根据我最初的头脑 Storm ,我决定使用 SilverLight(浏览器内或浏览器外)作为前端 [我对此没有意见]。

我更关心后端。我要么制作一个处理程序,要么制作一个 WCF 服务,要么使用全双工服务并为此使用池机制。作为一个随机的想法,我想出了一个定时器类型的逻辑,它会在客户端每隔 10 秒触发一次,并获得类似的状态

  • 现在轮到掷骰子了吗

  • 许多用户离开了首页(以防万一他们中的一些人离开了)

  • 什么是连接用户状态像有分数/积分等的游戏和更新
    游戏观照他这边

请将您的最佳答案放在这里,这将帮助我了解这一点。

提前致以问候和感谢

编辑:

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

FH

最佳答案

法西赫,

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

这模拟了不依赖计时器的双向通信。要完成此操作,您必须对服务器进行长时间运行的 AJAX 调用,并且只有在有更改需要更新时才会返回该调用。假设一个简单的网络聊天场景。 2 个用户对服务器进行长时间的 AJAX 调用,并且都在轮询公共(public)介质(比如 DB),如果用户 1 发送一些文本,它将得到更新,用户 2 等待的 AJAX 调用拾取文本并返回。两个用户将再次进行长时间的通话以互相倾听。

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

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

如果您正在寻找 WCF 双工 channel 以外的选项,HTML5 web sockets COMET 是其他方法。

看看这个post适用于支持网络套接字的浏览器。

关于c# - 保持用户联系的最佳设计/方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com