Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确保客户端在特定时间内调用SignalR?_C#_Signalr - Fatal编程技术网

C# 如何确保客户端在特定时间内调用SignalR?

C# 如何确保客户端在特定时间内调用SignalR?,c#,signalr,C#,Signalr,我在一个两人在线游戏中使用信号器。玩家最多有30秒的时间来执行他的动作,否则他将输掉比赛 我告诉客户开始: public class GameHub : Hub { public void AcceptRequest() { Clients.Client("connectionId").StartYourTurn(); } public void Action(string id) { // player calls

我在一个两人在线游戏中使用信号器。玩家最多有30秒的时间来执行他的动作,否则他将输掉比赛

我告诉客户开始:

public class GameHub : Hub
{
    public void AcceptRequest()
    {
        Clients.Client("connectionId").StartYourTurn();
    }

    public void Action(string id)
    {
           // player calls this method and I save it in a db.
    }
}

但我如何从信号机端检测到客户机在30秒内没有做任何事情?谢谢。

这与我在你的另一个问题上给你的答案基本相同

启动一个30秒的倒计时计时器,该计时器每秒向客户端广播一次。这次你不需要展示任何东西,直到你想提醒他们时间不多了。比方说10秒,然后显示剩余的10秒和/或一个视觉警告,例如UI中某个地方的颜色变化。然后再次在5,4,3,2,1。。。也许颜色越来越接近红色(意味着时间到了)


如果你不能让它工作,那么就发布代码,我相信@CodeWarrior就是指这个。

到目前为止你都做了哪些尝试?目前,我发现您需要一个代码编写服务来完成这项工作you@CodeWarrior谢谢你对否决票的澄清。但我不清楚你所说的我尝试过的是什么意思。我已经设置了
signer
并向客户端发送启动信号。然后我需要知道如何在30秒内检查客户机回叫信号器。这就是我来这里的原因。只需在请求之间设置一个30秒的计时器,在计时器结束时从服务器发出另一个请求,告诉客户端他们的时间到了。谢谢。我不想让服务器负担过重,因为这样,每秒钟我都要检查数据库,看看客户端是否同时向服务器发送了操作。我决定每5秒检查一次,客户端负责UI倒计时。如果客户端发送了任何内容,您应该知道这一点,而不必检查数据库。当客户端执行某个操作时,客户端应该在您的中心中调用某个方法。是的,客户端在我的中心中调用某个方法,但已启动的计时器如何能够在不首先将其保存在某个位置的情况下意识到该值?在此处进行假设,但是,如果您的UI正在使用计时器处理倒计时,那么您希望在对集线器中的方法进行调用后清除该计时器。从另一个功能中清除计时器,请参见此:嗯,计时器位于服务器端,在我的集线器中。集线器每隔几秒钟向客户端发送一个信号,持续30秒,通知客户端剩余时间。因此,同时,如果客户机调用一个hub方法来执行一个操作,那么计时器应该以某种方式感知并关闭。由于这个原因,当客户端调用该方法时,我在db中保存了一个标志,并且计时器检查该标志,如果为true,则关闭该标志。