基础知识
RTA 使用 WebSocket 会话与客户端建立持久连接。 这就是该服务向您传递统计数据的方式。 当客户端发送经过身份验证的连接请求时,RTA 会使用提供的令牌来验证连接是否可以建立,然后建立连接。 连接建立后,您的应用可以发出订阅特定统计数据的请求。 订阅成功后,RTA 会将当前值和一些附加元数据(例如统计数据的类型)作为响应负载的一部分返回。 在客户端处于订阅状态时,RTA 会转发任何发生的统计数据更新。 当您的游戏不再需要某项统计数据的实时更新时,便会停止跟踪该统计数据。断开连接
当用户的身份验证令牌过期时,会话将被服务终止。发生这种情况时,您的游戏应做出相应的响应。 按照设计,RTA 连接会在两小时后关闭,这会强制客户端重新连接。 这是因为连接的身份验证令牌被缓存以节省消息带宽。 最终该令牌会过期。 通过关闭连接并强制客户端重新连接,客户端就可以刷新身份验证令牌。 XBOX Services API (XSAPI) 会为游戏处理身份验证令牌刷新,方法是在 90 分钟后主动重新连接到 RTA 并重新提交订阅。 客户端可能会由于用户的 ISP 出现问题或游戏进程被挂起而断开连接。 在上述每种情况下,如果游戏已注册 RTA 连接状态更改事件,则会引发断开连接事件。通常,断开连接时不需要游戏采取任何操作,但游戏可能希望更新 UI 以反映 RTA 连接已丢失。
如果客户端将 RTA 用于多人游戏会话,并且断开连接达 30 秒,则多人游戏会话目录 (MPSD) 会检测到 RTA 会话已关闭,并将用户从会话中踢出。XSAPI 会自动重新建立 RTA 连接,但游戏在 RTA 订阅重新建立后重写其 MPSD 会话是游戏自身的职责。
取消订阅
我们不建议跟踪不需要实时更新的统计数据。 每个跟踪的统计数据都对应一个 RTA 订阅,而服务会限制每个游戏用户可拥有的订阅数量。 如果您订阅所有内容,可能会达到该限制,这会阻止您订阅重要的统计数据。 例如,您的游戏可能只需要某个特定场景内某项统计数据的更新。 当用户进入该场景时,您的游戏应开始跟踪该统计数据。 当用户离开该场景时,您的游戏应停止跟踪该统计数据。 同样,如果统计数据发生变化,并不需要通知。 移除所有统计数据更改处理程序会自动使 XSAPI 拆除相关的 RTA 订阅。 有关订阅限制的详细信息,请参阅本主题后面的“限制”部分。了解队列中的滞后项
从统计数据取消订阅时,可能仍有针对该统计数据的更新正在向客户端传送的过程中。 因此,即使您的游戏刚刚取消订阅某项统计数据,也请注意它仍然可能收到一两个与该统计数据相关的更新。 我们建议在无法识别订阅标识符时忽略这些统计数据更新。忽略您不理解的消息
消息协议可能会更新。为使您的应用不受任何新消息的影响,我们建议您的游戏丢弃未知的消息类型。限制
RTA 对UserStats 施加了 1000 的限制,对 Presence 施加了 2500 的限制。
如果客户端达到限流限制,它会在订阅或取消订阅调用中收到错误,或者断开连接。
无论哪种情况,有关所遇到的限流限制的更多信息都会随错误或断开连接消息一并提供给客户端。
在开发游戏时,请牢记这些概念。如果您执行的操作过于极端,
您的应用体验可能会下降,因为服务可以对您的调用进行限流。
在当前发布的 RTA 中,每个应用实例最多可拥有 1000 个统计数据订阅。
此外,应用实例还可以订阅用户完整好友列表长度的状态更新。
此数字可能在未来版本中更改。
