带有基于 WebSocket 的后端的独立游戏会话服务器
使用基于 Amazon API Gateway WebSocket 的架构,您可以使用 WebSocket 发出对战请求,并使用服务器启动的消息发送对战完成的推送通知。此架构通过在客户端和服务器之间进行双向通信来提高性能。
有关使用 API Gateway WebSock API 的更多信息,请参阅使用 WebSocket API。
下图显示了基于 WebSocket 的后端架构,该架构使用 API Gateway 和其他 AWS 服务 将玩家匹配到在 Amazon GameLift 实例集上运行的游戏。下表提供了对每个带编号的注解的说明。

-
游戏客户端从 Amazon Cognito 身份池中请求 Amazon Cognito 用户身份。
-
游戏客户端使用 Amazon Cognito 凭证签署与 API Gateway API 的 WebSocket 连接。
-
API Gateway 在连接上调用 AWS Lambda 函数。该函数将连接信息存储在 Amazon DynamoDB 表中。
-
游戏客户端通过 WebSocket 连接经 API Gateway API 向 Lambda 函数发送一条消息,请求会话。
-
Lambda 函数通过 Amazon GameLift FlexMatch 对战接收消息并请求匹配。
-
在 FlexMatch 匹配一组玩家后,FlexMatch 通过 Amazon GameLift 队列请求游戏会话放置。
-
Amazon GameLift 将会话放到其中一个实例集的位置后,Amazon GameLift 向 Amazon Simple Notification Service(Amazon SNS)主题发送一个事件通知。
-
Lambda 函数接收并处理 Amazon SNS 事件。
-
如果对战票证是
MatchmakingSucceeded
事件,那么 Lambda 函数会向 DynamoDB 请求正确的玩家连接。该函数随后通过 WebSocket 连接经 API Gateway API 向游戏客户端发送消息。在这种架构中,游戏客户端不会主动轮询对战状态。 -
游戏客户端通过 WebSocket 连接接收游戏服务器的端口和 IP 地址以及玩家会话 ID。
-
游戏客户端使用后端服务提供的端口和 IP 地址,使用 TCP 或 UDP 连接到游戏服务器。游戏客户端还将玩家会话 ID 发送到游戏服务器,然后游戏服务器使用 Amazon GameLift 服务器软件开发工具包验证该 ID。