如何在 SignalR 中一起启动客户端
How to start clients together in SignalR
我正在制作游戏。当两个玩家同意一起玩时,我想显示一个屏幕 5 秒,告诉他们准备好并同时开始。
public class GameHub : Hub
{
public void AcceptRequest()
{
Clients.Group("players").GetReadyToPlay();
}
}
我向他们发送了准备就绪的信号,但我不知道该怎么做才能同时开始。
我有两个问题:
- 我不想在客户端使用计时器以避免恶意
玩家打破开始过程。
- 我可以通过 UTC 开始时间,
但客户端时钟可能设置不正确。如何准确开始
在一起(几秒钟不是问题)。
啊啊
在我上面的方法AcceptRequest
中,我可以向他们发出准备就绪的信号,然后让线程休眠 5 秒,然后向客户端发送开始信号。应该这样做吗?
确保这 2 名玩家在这个游戏实例中属于他们自己的组。
启动发送给该组的倒计时,并在您的 UI 上显示倒计时的值。不要休眠线程,只需倒计时并向客户端广播“5”、“4”、“3”、“2”、“1”、"Go!" 更新。
"Go!" 可以使用实际开始比赛的单独广播方法。
最终您将不得不处理 disconnect/reconnect 个事件以及这些事件如何影响比赛。
我正在制作游戏。当两个玩家同意一起玩时,我想显示一个屏幕 5 秒,告诉他们准备好并同时开始。
public class GameHub : Hub
{
public void AcceptRequest()
{
Clients.Group("players").GetReadyToPlay();
}
}
我向他们发送了准备就绪的信号,但我不知道该怎么做才能同时开始。
我有两个问题:
- 我不想在客户端使用计时器以避免恶意 玩家打破开始过程。
- 我可以通过 UTC 开始时间, 但客户端时钟可能设置不正确。如何准确开始 在一起(几秒钟不是问题)。
啊啊
在我上面的方法AcceptRequest
中,我可以向他们发出准备就绪的信号,然后让线程休眠 5 秒,然后向客户端发送开始信号。应该这样做吗?
确保这 2 名玩家在这个游戏实例中属于他们自己的组。
启动发送给该组的倒计时,并在您的 UI 上显示倒计时的值。不要休眠线程,只需倒计时并向客户端广播“5”、“4”、“3”、“2”、“1”、"Go!" 更新。
"Go!" 可以使用实际开始比赛的单独广播方法。
最终您将不得不处理 disconnect/reconnect 个事件以及这些事件如何影响比赛。