RTA 服务最佳做法

使用本主题以便充分利用你的游戏的实时活动 (RTA) 服务。

基本内容

RTA 使用 WebSocket 会话创建与客户端的持续性连接。 这是该服务提供统计信息的方式。 客户端发送经过身份验证的连接请求时,RTA 将使用提供的令牌验证可否进行连接,然后建立连接。

建立连接后,应用可以发出订阅特定统计信息的请求。 成功订阅后,RTA 将返回当前值和其他一些元数据,例如统计信息类型,作为响应有效负载的一部分。 RTA 将转发客户端订阅时发生的任何统计信息更新。

如果游戏不需要统计信息的实时更新,将停止跟踪该统计信息。

断开

用户的身份验证令牌过期时,服务将终止会话。 出现此情况时,你的游戏应作出相应的反应。 根据设计,RTA 连接将在两个小时后关闭,这将强制客户端重新连接。 这是由于缓存用于连接的身份验证令牌以节省邮件带宽。 该令牌最终会到期。 通过关闭连接并强制客户端重新连接,客户端将刷新身份验证令牌。 Xbox 服务 API (XSAPI) 通过主动重新连接到 RTA 并在 90 分钟后重新提交订阅,来处理游戏的身份验证令牌刷新。 由于用户的 ISP 遇到问题,或者当游戏的处理被暂停时,客户端可能也会断开连接。

在每种情况下,如果游戏已注册 RTA 连接状态更改事件,将引发断开事件。

注意

通常断开连接后,游戏无需执行任何操作,但游戏可能要更新 UI 以反映 RTA 连接已丢失。

XSAPI 将自动尝试重新建立 WebSocket 连接,并维护现有的 RTA 服务订阅。

注意

如果客户端将 RTA 用于多人游戏会话,并且断开连接 30 秒,则多人游戏会话目录 (MPSD) 会检测到 RTA 会话已关闭,并将用户从会话中退出。 XSAPI 将自动重建 RTA 连接,但 RTA 订阅重建之后,游戏将负责重写 MPSD 会话。

有关 MPSD 的详细信息,请参阅多人游戏会话目录概述

取消订阅

不建议跟踪不需要的实时更新的统计信息。 每个跟踪的统计信息都对应一个 RTA 订阅,而且服务限制了用户可拥有每个游戏的订阅数。 如果订阅了所有内容,可能会达到该限制,这会阻止订阅重要统计信息。

例如,游戏可能只需要更新某个特定场景中的统计信息。 当用户进入该场景时,你的游戏应该跟踪该统计信息。 当用户离开该场景时,你的游戏应该停止跟踪该统计信息。 同样,如果统计信息更改,则不需要通知。 删除所有统计信息更改处理程序会自动使 XSAPI 减少相关的 RTA 订阅。

有关订阅限制的详细信息,请参阅本主题后面的“限制”部分。

了解队列中的潜在项目

如果取消订阅统计信息,在访问客户端的过程中,可能仍存在该统计信息的更新。 因此需要注意,即使游戏刚刚取消订阅统计信息,仍可能获得一两项与该统计信息相关的更新。

当未识别订阅标识符时,建议忽略统计信息更新。

忽略不了解的消息。

消息协议可以更新。 要让应用与任何新消息无关,建议游戏仅丢弃未知的消息类型。

限制

RTA 强制限制 UserStats 为 1000,而限制 Presence 为 2500。

如果客户端达到限制,将会在订阅/取消订阅调用中收到错误,或者断开连接。 无论哪种情况,都将为客户端提供有关达到该限制的详细信息,以及错误消息或断开连接消息。

在开发游戏时,请将这些概念牢记于心。 如果做极端的事情,则可能会影响应用体验,因为该服务可能会限制调用。

在当前的 RTA 版本中,应用程序的每个实例最多可以订阅 1000 次统计信息。 另外,应用程序的实例还可以订阅用户的完整人脉列表,以获得状态更新。 这个数字可能会在以后的版本中更改。

另请参阅

实时活动服务概述
注册获得玩家统计信息更改通知
开始使用 XSAPI