API Gateway 中的 WebSocket API 概览
在 API Gateway 中,您可以创建 WebSocket API 作为AWS服务(如 Lambda 或 DynamoDB)或 HTTP 终端节点的有状态前端。WebSocket API 根据从客户端应用程序收到的消息内容来调用您的后端。
与接收和响应请求的 REST API 不同,WebSocket 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 Gateway 会在客户端或服务器与 API 断开连接时调用
$disconnect
路由。 -
如果找到匹配的路由,则 API Gateway 会在针对消息评估路由选择表达式之后调用自定义路由;匹配项确定调用哪个集成。
-
如果无法针对消息评估路径选择表达式或未找到匹配的路由,则 API Gateway 会调用
$default
路由。
有关 $connect
和 $disconnect
路由的更多信息,请参阅管理连接的用户和客户端应用程序:$connect 和 $disconnect 路由。
有关 $default
路由和自定义路由的更多信息,请参阅在 API Gateway 中调用与 $default 路由和自定义路由的后端集成。
向连接的客户端应用程序发送数据
后端服务可以将数据发送到连接的客户端应用程序。可以通过执行以下操作来发送数据:
-
使用集成可发送响应,该响应通过您定义的路由响应返回到客户端。
-
您可以使用
@connections
API 发送 POST 请求。有关更多信息,请参阅 在后端服务中使用 @connections 命令。