

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon GameLift Streams 啟動串流工作階段
<a name="stream-sessions"></a>

本節涵蓋串流工作階段，串流的實際執行個體，其中最終使用者或玩家可以與您的應用程式互動或玩遊戲。您將了解如何測試自己的串流工作階段，並了解串流工作階段生命週期。

 若要對最終使用者啟動串流工作階段，您必須將 Amazon GameLift Streams 整合到您自己的服務中。如需詳細資訊，請參閱 [Amazon GameLift Streams 後端服務和 Web 用戶端](sdk.md)。

## 關於串流工作階段
<a name="stream-sessions-about"></a>

 啟動串流工作階段的先決條件是處於**就緒**狀態的應用程式、在您要串流的位置具有可用容量的串流群組，以及將應用程式複寫至您要串流的位置。串流工作階段會在串流群組配置的其中一個運算資源上執行。啟動串流時，您必須指定串流群組和應用程式，才能使用其 ARN 或 ID 值進行串流。

 當您成功啟動串流工作階段時，您會收到該串流工作階段的唯一識別符。然後，您可以使用該 ID 將串流工作階段連線至最終使用者。如需詳細資訊，請參閱《*Amazon GameLift Streams API 參考*》中的 [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html)。

## 在 主控台中測試串流
<a name="stream-sessions-testing"></a>

 測試應用程式串流如何透過 Amazon GameLift Streams 主控台的最直接方式。當您啟動串流時，Amazon GameLift Streams 會使用串流群組配置的其中一個運算資源。因此，您的串流群組中必須有可用的容量。

**在 Amazon GameLift Streams 主控台中測試串流**

1.  登入 AWS 管理主控台 並開啟 [Amazon GameLift Streams 主控台](https://console.aws.amazon.com/gameliftstreams/)。

1. 您可以透過多種方式測試串流。從**串流群組**頁面或**測試串流**頁面開始，並遵循下列步驟：

   1. 選取您要用來串流的串流群組。

   1. 如果您是從**串流群組**頁面開始，請選擇**測試串流**。如果您是從**測試串流**頁面開始，請選取**選擇**。這會開啟所選**串流**群組的測試串流組態頁面。

   1. 在**連結應用程式中**，選取應用程式。

   1. 在**位置**中，選擇具有可用容量的位置。

   1. （選用） 在**程式組態**中，輸入命令列引數或環境變數，以在應用程式啟動時傳遞給應用程式。

   1. 確認您的選擇，然後選擇**測試串流**。

1. 串流載入後，您可以在串流中執行下列動作：

   1. 若要連接輸入，例如滑鼠、鍵盤和遊戲台 (**測試串流**不支援的麥克風除外），請選擇**連接輸入**。當您將游標移至串流視窗時，會自動連接滑鼠。

   1. 若要讓在串流工作階段期間建立的檔案在工作階段結束時匯出至 Amazon S3 儲存貯體，請選擇**匯出檔案**並指定儲存貯體詳細資訊。您可以在**工作階段**頁面上找到匯出的檔案。

   1. 若要以全螢幕檢視串流，請選擇**全螢幕**。按下**逸**出以反轉此動作。

1. 若要結束串流，請選擇**終止工作階段**。當串流中斷連線時，串流容量會變成可用於啟動另一個串流。

**注意**  
Amazon GameLift Streams 主控台中的**測試串流**功能不支援麥克風。

## 串流工作階段生命週期
<a name="stream-sessions-lifecycle"></a>

在 Amazon GameLift Streams 中使用串流工作階段時，此圖表可協助您了解串流工作階段在整個生命週期中轉換到的不同狀態。
+ [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) 會建立新的串流工作階段，以 `ACTIVATING` 狀態開始。當 Amazon GameLift Streams 尋找可用資源來託管串流時，串流工作階段會轉換為 `ACTIVE`。當用戶端連線至作用中串流時，串流工作階段會轉換為 `CONNECTED`。
+ 當用戶端與串流中斷連線時，串流工作階段會轉換為 `PENDING_CLIENT_RECONNECTION` 狀態。[CreateStreamSessionConnection](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html) 會將串流工作階段轉換為 `RECONNECTING`，並將啟動用戶端以重新連線至串流或建立新的串流工作階段。當串流工作階段準備好供用戶端重新連線時，它會轉換為 `ACTIVE`。當用戶端重新連線時，它會轉換回 `CONNECTED`。如果用戶端中斷連線的時間超過 `ConnectionTimeoutSeconds`，則串流工作階段會結束。
+ 當用戶端未在 指定的時間內連線到處於 `ACTIVE`或 `PENDING_CLIENT_RECONNECTION` 狀態的串流工作階段時`ConnectionTimeoutSeconds`，則會轉換為 `TERMINATED`。
+ [TerminateStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_TerminateStreamSession.html) 會啟動串流的終止，而串流工作階段會轉換為 `TERMINATING` 狀態。當串流工作階段成功終止時，它會轉換為 `TERMINATED`。
+ 除了 之外，任何狀態的串流工作階段`TERMINATED`都可以轉換為 `ERROR`。當 API 呼叫傳回 `ERROR` 狀態值時，請檢查 StatusReason 的值，以取得錯誤原因的簡短描述。您也可以呼叫 [GetStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html) 來檢查這些值。

![\[此圖表顯示串流工作階段在整個生命週期中轉換為 的不同狀態。\]](http://docs.aws.amazon.com/zh_tw/gameliftstreams/latest/developerguide/images/stream_session_lifecycle.png)


## 影響串流工作階段的逾時值
<a name="stream-sessions-lifecycle-timeouts"></a>

串流工作階段由數個逾時值管理，這些值控制工作階段生命週期的不同層面。按照您通常在串流工作階段生命週期期間遇到它們的大致時間順序，它們包括下列項目：

**放置逾時**  
Amazon GameLift Streams 尋找運算資源以使用可用容量託管串流工作階段的時間限制。配置逾時會根據用來履行串流請求的容量類型而有所不同：  
+ 全年無休的容量：75 秒
+ 隨需容量：
  + Linux/Proton 執行時間：90 秒
  + Windows 執行時間：10 分鐘
+ 行為：如果 Amazon GameLift Streams 無法在此期間內識別可用資源，則串流工作階段會使用 `ERROR` `StatusReason`的 `Status`變更為 `placementTimeout`。

**連線逾時**  
Amazon GameLift Streams 等待用戶端連線或重新連線至串流工作階段的時間長度。  
+ 參數：在 [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) `ConnectionTimeoutSeconds`中
+ 範圍：1 - 3600 秒 (1 小時）
+ 預設：120 秒 (2 分鐘）
+ 行為：計時器會在串流工作階段達到 `ACTIVE`或 `PENDING_CLIENT_RECONNECTION` 狀態時啟動。如果沒有用戶端在逾時之前連線，工作階段會`Status`轉換為 `TERMINATED`。

**工作階段長度逾時**  
Amazon GameLift Streams 保持串流工作階段開啟的持續時間上限。  
+ 參數：在 [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) `SessionLengthSeconds`中
+ 範圍：1 - 86400 秒 (24 小時）
+ 預設：43200 秒 (12 小時）
+ 行為：達到時間限制時，無論任何現有的用戶端連線為何， 都會終止串流工作階段。

## 終止串流工作階段
<a name="stream-sessions-terminate"></a>

如果您需要強制串流工作階段終止，您有下列選項：
+ **使用 TerminateStreamSession API：**若要使用 [TerminateStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_TerminateStreamSession.html)，您將需要串流群組 ID 和串流工作階段 ID。您可以使用 [ListStreamSessions](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListStreamSessions.html) 或 [ListStreamSessionsByAccount](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListStreamSessionsByAccount.html) 搭配 `--status CONNECTED` 參數，以取得已連接用戶端的串流工作階段清單。
+ **從其串流群組中移除工作階段的位置：**從串流工作階段正在串流的串流群組中移除位置將終止該位置中的所有作用中串流工作階段。您可以從主控台或使用 [RemoveStreamGroupLocations](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_RemoveStreamGroupLocations.html) API 移除串流群組中的位置。
+ **刪除工作階段的串流群組：**刪除串流群組將終止串流群組所有位置中的所有作用中串流工作階段。您可以從主控台或使用 [DeleteStreamGroup](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_DeleteStreamGroup.html) API 刪除串流群組。請謹慎使用 ，因為您將突然結束用戶端連線。

## 重新連線至串流工作階段
<a name="stream-sessions-reconnection"></a>

如果用戶端在未結束工作階段的情況下中斷與串流工作階段的連線，可以在串流工作階段啟動`ConnectionTimeoutSeconds`時所指定的時間內重新連線至工作階段。若要重新連線至工作階段，您需要串流工作階段的 ID。如需詳細資訊，請參閱《*Amazon GameLift Streams API 參考*》中的 [CreateStreamSessionConnection](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html)。您可以在 [React Starter 範例中](https://github.com/aws-samples/sample-amazon-gamelift-streams-react-app)看到重新連線至串流工作階段的範例。