View a markdown version of this page

使用 Amazon Streams 开始 GameLift 直播会话 - 亚马逊 GameLift 直播

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Streams 开始 GameLift 直播会话

本节介绍直播会话,即最终用户或玩家可以在其中与您的应用程序交互或玩游戏的直播的实际实例。您将学习如何测试自己的直播会话并了解直播会话的生命周期。

要启动面向最终用户的直播会话,您可以将 Amazon GameLift Streams 集成到自己的服务和客户端应用程序中;有关更多信息,请参阅Amazon GameLift Streams 后端服务和网络客户端。您还可以创建直播 URL,它在支持的 Web 浏览器中启动直播会话,无需最终用户拥有 AWS 凭据或客户端集成;有关更多信息,请参阅使用直播 URL 共享直播会话

关于直播会话

启动直播会话的先决条件是处于就绪状态的应用程序、在要进行流式传输的位置具有可用容量的流组,以及将应用程序复制到要进行流式传输的位置。流会话在流组分配的计算资源之一上运行。启动直播时,必须使用直播组和应用程序的 ARN 或 ID 值指定要进行直播的应用程序。

成功启动直播会话后,您将收到该直播会话的唯一标识符。然后,使用该 ID 将直播会话连接到最终用户。有关更多信息,请参阅StartStreamSession亚马逊 GameLift 直播 API 参考》

或者,您可以在启动直播会话时提供 IAM 角色 ARN。如果提供,Amazon GameLift Streams 将代入该角色,您的应用程序会自动接收 AWS 证书。您无需更改应用程序代码。有关更多信息,请参阅 向流式传输应用程序提供 AWS 凭证

在控制台中测试直播

测试应用程序流式传输方式的最直接方法是通过 Amazon GameLift Streams 控制台。当您启动直播时,Amazon Stre GameLift ams 会使用您的流组分配的计算资源之一。因此,您的直播群组中必须有可用容量。

在 Amazon Stream GameLift s 控制台中测试您的直播
  1. 登录 AWS 管理控制台 并打开 Amazon GameLift Streams 控制台

  2. 您可以通过多种方式测试直播。从 “直播群组” 页面或 “测试直播” 页面开始,按照以下步骤操作:

    1. 选择要用于直播的直播群组。

    2. 如果你是从 “直播群组” 页面开始,请选择 “测试直播” 。如果你从 “测试直播” 页面开始,请选择 “选择” 。这将打开所选直播组的测试直播配置页面。

    3. 关联的应用程序中,选择一个应用程序。

    4. 位置中,选择一个具有可用容量的位置。

    5. (可选)在程序配置中,输入命令行参数或环境变量,以便在应用程序启动时传递给应用程序。

    6. 确认您的选择,然后选择 “测试直播”

  3. 直播加载后,您可以在直播中执行以下操作:

    1. 要连接输入,例如鼠标、键盘和游戏手柄(麦克风除外,测试流中不支持这些输入),请选择 “连接输入”。当你将光标移到直播窗口时,你会自动连接鼠标。

    2. 要将流式传输会话期间创建的文件在会话结束时导出到 Amazon S3 存储桶,请选择导出文件并指定存储桶的详细信息。导出的文件可以在会话页面上找到。

    3. 要全屏查看直播,请选择 “屏”。按 E scape 可撤消此操作。

  4. 要结束直播,请选择 “终止会话” 。当直播断开连接时,流容量可用于启动另一个流。

注意

Amazon Stream GameLift s 控制台中的测试直播功能不支持麦克风。

直播会话生命周期

在 Amazon Streams 中处理 GameLift 直播会话时,此图表可以帮助您了解直播会话在其整个生命周期中过渡到的不同状态。

  • StartStreamSession创建一个新的直播会话,该会话以ACTIVATING状态开始。当 Amazon GameLift Streams 找到可用资源来托管直播时,直播会话将转换为ACTIVE。当客户端连接到活动直播时,直播会话将转换为CONNECTED

  • 当客户端与直播断开连接时,直播会话将转换为PENDING_CLIENT_RECONNECTION状态。CreateStreamSessionConnection将直播会话转换为RECONNECTING,并将启动客户端重新连接到直播或创建新的直播会话。当直播会话准备好可供客户端重新连接时,它会转换为ACTIVE。当客户端重新连接时,它会转换回到。CONNECTED如果客户端断开连接的时间超过ConnectionTimeoutSeconds,则直播会话结束。

  • 当客户端未在指定的时间段内连接到处于ACTIVEPENDING_CLIENT_RECONNECTION状态的直播会话时ConnectionTimeoutSeconds,它将转换为TERMINATED

  • TerminateStreamSession启动直播的终止,直播会话过渡到TERMINATING状态。当直播会话成功终止时,它会转换为。TERMINATED

  • 处于任何状态(除外TERMINATED)的直播会话均可转换为ERROR。当 API 调用ERROR作为状态值返回时,请检查 StatusReason 的值以简短描述错误原因。您也可以GetStreamSession致电检查这些值。

此图显示了直播会话在其整个生命周期中过渡到的不同状态。

影响直播会话的超时值

直播会话受多个超时值控制,这些超时值控制会话生命周期的不同方面。按照您在直播会话生命周期中通常会遇到它们的时间,大致按时间顺序排列,它们包括以下内容:

放置超时

Amazon GameLift Streams 使用可用容量查找用于托管流会话的计算资源的时间限制。放置超时时间因用于完成直播请求的容量类型而异:

  • Always-on 容量:75 秒

  • On-demand 容量:

    • Linux/Proton 运行时间:90 秒

    • Windows 运行时间:10 分钟

  • 行为:如果 Amazon GameLift Streams 无法在这段时间内识别出可用资源,则直播会话将Status更改为ERRORStatusReason设为placementTimeout

连接超时

Amazon GameLift Streams 等待客户端连接或重新连接到直播会话的时间长度。

  • 参数:输ConnectionTimeoutSeconds StartStreamSession

  • 范围:1-3600 秒(1 小时)

  • 默认值:120 秒(2 分钟)

  • 行为:当直播会话达到ACTIVEPENDING_CLIENT_RECONNECTION状态时,计时器启动。如果在超时之前没有客户端连接,则会话将Status转换为TERMINATED

会话长度超时

Amazon GameLift Streams 保持直播会话处于打开状态的最大时长。

  • 参数:输SessionLengthSeconds StartStreamSession

  • 范围:1-86400 秒(24 小时)

  • 默认值:43200 秒(12 小时)

  • 行为:达到时间限制时,无论现有客户端连接如何,都会终止直播会话。

终止直播会话

如果您需要强制终止直播会话,则有以下选择:

  • 使用 TerminateStreamSession API:要使用 TerminateStreamSession,您需要直播群组 ID 和直播会话 ID。您可以将ListStreamSessionsListStreamSessionsByAccount--status CONNECTED参数一起使用来获取连接了客户端的直播会话列表。

  • 从其直播组中移除会话的位置:从直播组中移除会话正在直播的位置将终止该位置的所有活跃直播会话。您可以从控制台或使用 RemoveStreamGroupLocations API 删除直播群组中的某个位置。

  • 删除会话的直播组:删除直播组将终止该直播组所有位置的所有活跃直播会话。您可以从控制台删除直播群组,也可以使用 DeleteStreamGroup API 删除直播群组。请谨慎使用,因为您将突然终止客户端连接。

重新连接到直播会话

如果客户端在未结束会话的情况下与直播会话断开连接,则它可以在直播会话启动ConnectionTimeoutSeconds时指定的时间内重新连接到该会话。要重新连接到会话,你需要直播会话的 ID。有关详细信息,请参阅 Amazon GameLift Streams API 参考CreateStreamSessionConnection中的内容。你可以在 React 入门示例中看到重新连接到直播会话的示例

重新连接不适用于通过激活直播 URL 启动的直播会话。因为没有重新连接,所以再次打开直播网址会启动一个全新的会话,并消耗其中的其他用途。UsageLimit有关更多信息,请参阅 使用直播 URL 共享直播会话