服务器 - >许多客户:同时发生的事件

时间:2013-01-26 17:35:53

标签: networking client-server

不确定此问题属于哪个类别;也许是一般的网络/设计/算法。

对于一个项目,我正在寻找一台具有多个连接客户端的服务器。一段时间后,当所有客户端都已连接时,服务器应向每个客户端发送一条消息,指示他们采取某些措施。我需要保证每个客户端都会在完全相同的时间执行此操作。从理论上讲,如何做到这一点?我会遇到什么实际的复杂情况?我的目标平台是移动的。

我能想到的一个解决方案;

  • 服务器主动并持续跟踪每个客户端的往返延迟。如果此延迟不会随着时间的推移而变化太快,则服务器应该能够补偿每个客户端的延迟并向每个客户端发送消息,以便它们在大致同时开始执行。还有更好的方法吗?

一个不太相关的问题:Client side and server side events not firing simultaneously

2 个答案:

答案 0 :(得分:0)

很容易做到。

您不关心延迟,也不需要在客户端使用相同的机器时间。 这里的关键是创建一个精确的约会。

由于客户端与服务器进行通信,而不是反之亦然(尽管您没有对此进行任何说明)。我可以给你以下解决方案:

当客户端连接到服务器时,它应该发送当地时间。

当服务器认为是时候设置事件。它应该向每个客户发送约会活动,其中包含本地时间。服务器可以计算出来。

然后,每个客户都知道什么时候完全他们需要通过设置计时器来做某事,直到他们的约会时间到来。

答案 1 :(得分:0)

理论上是的,你可以但不能在现实生活中。 至少你应该添加一些有效时间段。所有操作都应该在预定义的时间段中,以便操作有效。

所以基本上“同一时刻” = “预定义的时段”预定义的时间段可以 接近同一时刻或实时