如何在SignalR中一起启动客户端

时间:2017-10-01 11:52:39

标签: c# signalr signalr-hub

我正在制作游戏。当两个玩家接受一起玩时,我想显示一个屏幕5秒,告诉他们准备好并同时开始。

public class GameHub : Hub
{
    public void AcceptRequest()
    {
        Clients.Group("players").GetReadyToPlay();
    }
}

我发给他们一个准备就绪的信号,但我不知道该怎么做才能同时开始。

我有两个问题:

  • 我不想在客户端使用计时器来避免恶意攻击 球员打破了首发过程。
  • 我可以通过UTC的开始时间, 但客户端时钟可能未正确设置。如何准确地开始 在一起(几秒钟不是问题)。

稀释

在上面的方法AcceptRequest中,我可以发信号通知它们准备好,然后让线程休眠5秒钟,然后向客户端发送一个启动信号。这是怎么做的?

1 个答案:

答案 0 :(得分:1)

确保这两个玩家在这个游戏实例中属于他们自己的组。

启动发送到该组的倒计时,并在您的UI上显示倒计时的值。只需倒计时并向客户广播一个" 5"," 4"," 3"," 2",而不是睡觉你的线程" 1"," Go!"更新

" Go!"可能是一个单独的广播方法,实际上开始匹配。

最终,您必须处理断开/重新连接事件以及这些事件对匹配的影响。