C# 在重定向之前等待服务器响应

C# 在重定向之前等待服务器响应,c#,asp.net,C#,Asp.net,所以我正在用C#和asp.net做一个自我开发项目。这是一个纸牌游戏,我正在为它编写一个配对系统。我想让它工作的方式是,你点击“玩游戏”按钮,它会将你带到一个新页面,在那里你等待其他玩家加入,然后它会将你重定向到游戏页面。因此,理想情况下,您可以进入等待页面;该页面类似于“保持”并侦听服务器;服务器为游戏接受另一名玩家,并ping第一个说“好的,我们走”的人,然后将两名玩家带到游戏区域。我的问题是,如何让客户端在重定向之前等待这样的服务器响应?您可以使用两种不同的方法 您可以使用在客户端和服务器

所以我正在用C#和asp.net做一个自我开发项目。这是一个纸牌游戏,我正在为它编写一个配对系统。我想让它工作的方式是,你点击“玩游戏”按钮,它会将你带到一个新页面,在那里你等待其他玩家加入,然后它会将你重定向到游戏页面。因此,理想情况下,您可以进入等待页面;该页面类似于“保持”并侦听服务器;服务器为游戏接受另一名玩家,并ping第一个说“好的,我们走”的人,然后将两名玩家带到游戏区域。我的问题是,如何让客户端在重定向之前等待这样的服务器响应?

您可以使用两种不同的方法

您可以使用在客户端和服务器之间进行轮询。这个想法是,当超时发生时,你重定向到配对页面(或类似页面),如果有匹配,那么你可以重定向他们加入游戏。如果没有匹配,玩家将被重定向到等待屏幕,在那里再次设置setTimeout

第二种方法是。这是一个HTML5标准,允许客户端和服务器之间直接通信。这里的问题是,您需要强制客户机成为使用HTML5的现代浏览器

微软有一个专门的库来处理这种情况而不进行民意调查,一旦我的大脑再次活跃起来,我就会用它更新我的帖子


因为您使用的是C#,所以也可以使用。SignalR是一个库,它允许您的服务器与客户端实时通信,而无需任何客户端交互。如果可以使用WebSocket,它会使用WebSocket;如果客户端使用的浏览器没有实现HTML5标准,它会使用轮询等其他技术。

我现在正在研究这些东西。WebSockets问题并不是一个真正的问题,因为这对我来说只是一个学习练习。我可能会选择WebSocket/信号机路线。setTimeout选项似乎是最简单的方法,我想,但是学习HTML5并不是件坏事。谢谢你的帮助!设置超时非常简单,但我也看到一些人把它搞砸了。知道这一点很好,因为您可能并不总是使用.NET服务器,或者在管理严格的办公室工作(例如,限制允许使用的库)。但SignalR是一个非常酷的图书馆,概念上非常酷。镇上的选民应该就他们为什么反对投票发表评论。我的假设是,你也应该包括你尝试过的东西以及为什么那些尝试不起作用。我建议参观一下,因为它解释了一切:我什么都没试过,主要是研究,结果是两手空空。谷歌似乎真的想让我研究一下Monitor类,以及其他有关堆栈溢出的问题,这些问题需要等待一段时间才能解决,或者得到的答案似乎比我预期的要复杂一些(似乎是想让我尝试多线程解决方案),我只是觉得有更好的方法。我在帖子上尝试了一个while循环,它锁定了服务器,我立即想到“我真傻,竟然认为这会起作用”。