使用 Juggernaut 同步客户端计时器时处理延迟

Posted

技术标签:

【中文标题】使用 Juggernaut 同步客户端计时器时处理延迟【英文标题】:Handling latency while synchronizing client-side timers using Juggernaut 【发布时间】:2011-10-17 12:32:04 【问题描述】:

我需要为一个梦幻体育网站实现一个草稿应用程序。每个用户将有 1 分 30 秒的时间来选择其团队中的一名球员,如果该时间已过,它将自动被选中。我们计划的实施将使用 Juggernaut 将轮次更改推送给参与选秀的每个用户。但我仍然不确定如何处理延迟。

这里的主要问题是,如果用户的延迟比其他用户高,他会稍晚收到轮次变化,并且他的计时器不会同步。假设某人在自己选择了一名球员后获得了转身,而他认为他还剩下 2 秒,我们该如何处理这种情况?尝试测量每个用户延迟并调整客户端计时器以最小化该问题是否更好?如果是这样,我们如何实现它?

【问题讨论】:

【参考方案1】:

这是一个棘手的问题,但有一些很好的解决方案。查看 time.gov 做了什么,以及它是如何做的;本质上,据我了解,他们使用 Java 对服务器执行多个重复请求,以尝试了解通信中涉及的延迟,然后生成延迟度量,用于扭曲返回的时间数据。您可以对您的应用程序使用相同的过程,并且更加准确;跟踪延迟是什么以及它如何随时间变化可以让您对延迟数字的可靠性等进行一些统计推断。它可能有点复杂,但它绝对可以让您平滑您的性能。我的理解是,大多数 MMO 也是这样做的,以管理延迟。

【讨论】:

以上是关于使用 Juggernaut 同步客户端计时器时处理延迟的主要内容,如果未能解决你的问题,请参考以下文章

使用 juggernaut 作为 rails 插件时遇到问题

Rails - 同步 - Faye、Juggernaut、Cool.io、普通的旧事件机器

从 Rails 监听 Juggernaut 事件

node.js 和 juggernaut 发布/订阅

如何从 Android 应用程序与服务器同步倒数计时器

在服务器和客户端之间同步计时器 - 节点js / android / socket io