API Gateway 中的 WebSocket API 概觀 - Amazon API Gateway

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

API Gateway 中的 WebSocket API 概觀

在 API Gateway 中,您可以建立 WebSocket API 做為 AWS 服務 (例如 Lambda 或 DynamoDB) 或 HTTP 端點的狀態前端。WebSocket API 會根據自用戶端應用程式接收的訊息內容來後端。

WebSocket API 與 REST API 不同 (其會接收並回應請求),會支援用戶端應用程式和後端之間的雙向通訊。該後端可以將回呼訊息傳送到連線用戶端。

在 WebSocket API 中,是根據您設定的路由將傳入 JSON 訊息導向到後端整合。(會將非 JSON 訊息導向您設定的 $default 路由。)

路由包含的路由金鑰,是您可以在路由選擇表達式經評估後即預期的值。routeSelectionExpression 是在 API 層級定義的屬性。它指定的 JSON 屬性預計會出現在訊息承載。如需路由選擇表達式的詳細資訊,請參閱路由選擇表達式

例如,如果您的 JSON 訊息包含 action 屬性,以及您想要根據此屬性執行不同動作,路由選擇表達式可能會 ${request.body.action}。您的路由表將指定要執行哪一個動作,方法是將 action 屬性值與您在資料表中定義的自訂路由鍵值進行比對。

使用 WebSocket API 的路由

有三種預先定義的路由可供使用:$connect$disconnect$default。此外,您可以建立自訂路由。

  • API Gateway 會在用戶端和 WebSocket API 之間的持續連線進行起始化時呼叫 $connect 路由。

  • 當用戶端或伺服器中斷與 API 的連線時,API Gateway 會呼叫 $disconnect 路由。

  • 若發現相符的路由,針對該訊息評估路由選擇運算式後,API Gateway 即會呼叫自訂路由;該比對會判斷要叫用哪些整合。

  • 如果未發現相符路由,或無法針對該訊息來評估路由選擇表達式時,API Gateway 會呼叫 $default 路由。

如需 $connect$disconnect 路由的相關資訊,請參閱管理連線的使用者和用戶端應用程式:$connect 和 $disconnect 路由

如需 $default 路由和自訂路由的相關資訊,請參閱在 API Gateway 中調用與 $default Route 和自訂路由的後端整合

將資料傳送至連線的用戶端應用程式

後端服務可將資料傳送到連線的用戶端應用程式。您可以藉由執行以下動作來傳送電子郵件:

  • 使用整合以傳送回應,該回應會由您已定義的路由傳回到用戶端。

  • 您可以使用 @connections API 來傳送 POST 請求。如需詳細資訊,請參閱在後端服務使用 @connections 命令

WebSocket API 狀態碼

API Gateway WebSocket APIs使用以下狀態碼,從伺服器與用戶端進行通訊,如 WebSocket 關閉代碼編號登錄檔中所述:

1001

當用戶端閒置 10 分鐘或達到最長 2 小時連線生命週期時,API Gateway 會傳回此狀態碼。

1003

當端點收到二進位媒體類型時,API Gateway 會傳回此狀態碼。WebSocket APIs 不支援二進位媒體類型。

1005

如果用戶端傳送的關閉影格沒有關閉碼,API Gateway 會傳回此狀態碼。

1006

API Gateway 會在連線意外關閉時傳回此狀態碼,例如在沒有 WebSocket 關閉框架的情況下關閉 TCP 連線。

1008

當端點收到來自特定用戶端的太多請求時,API Gateway 會傳回此狀態碼。

1009

當端點收到訊息太大而無法處理時,API Gateway 會傳回此狀態碼。

1011

API Gateway 會在發生內部伺服器錯誤時傳回此狀態碼。

1012

如果服務重新啟動,API Gateway 會傳回此狀態碼。