管理请求

在本节中,我们将展示一个从头到尾管理会话请求的基本示例。

假设我们有一个应用程序版本集,包含 Seat,四个 插槽,以及 autodeploy。如果您不熟悉这些术语,应回溯查看会话文档。

创建初始请求

我们的匹配器已确定具有 IP 地址的玩家 1.2.3.45.6.7.8 希望一起游玩。匹配器将发送请求为他们创建一个会话。您可以在此处找到完整的 API 文档.

我们目前没有用于托管会话请求的部署,因此 Arbitrium 将为我们的两名玩家自动创建一个。

circle-check
POST - /v1/session
{
  "app_name": "demo",
  "version_name": "v1",
  "ip_list": ["1.2.3.4", "5.6.7.8"],
  "continent": "North America",
  "webhook_url": "https://my-webhook.com/callback"
}

处理会话状态

无论您选择使用 webhook 还是进行 GET 请求,您都会收到相同的主体。会话 GET 主体包含各种状态和键,但您只需要管理 status 键。您应处理的三种状态是 Ready, 错误(Error),以及 不可处理(Unprocessable).

错误和不可处理

如果您的会话处于这两种状态中的任意一种,说明我们无法将您的会话关联到一个已就绪的部署。因此,您将没有可用于连接玩家的 URL。重要的是在后端处理这些状态。造成这种情况的原因有多种。

  • 您未激活 autodeploy 选项,因此没有可用的部署,或它们都已满载。

  • 由于配置错误,我们无法部署您的应用程序版本。

Ready

当您的会话状态为 Ready时,表示它已就绪,玩家可以连接到该部署。您可以在主体的部署端口部分获取连接 URL。 GET 主体。

circle-info

正文中还有更多信息,但为清晰起见,我们已删除与示例无关的部分。

初始化、寻址、等待

这些是挂起状态,意味着当我们正在分析哪个部署应托管您的会话或正在部署新部署时会出现这些状态。您通常不需要处理这些状态。

删除会话

当您确定需要删除会话时(无论是因为您正在断开服务器与玩家之间的连接和/或比赛结束),您需要向我们发送删除请求。

您可以简单地 删除会话 使用一个 DELETE 向 以下 发送 请求 /v1/session/{SESSION_ID}。您的会话将在变为不可用之前进入 终止(Terminating) 状态。

circle-exclamation

基本过滤

您可以过滤会话以强制使用特定位置,例如一个 国家, 大陆,或 城市。您还可以指定一个 纬度(latitude)经度(longitude),并且部署将尽可能靠近该地理位置进行。您可以查看完整的过滤器列表 这里。这在您的匹配系统中可能很有用。

在下一节中,我们将向您展示如何使用 选择器 和部署上的标签进行一些高级过滤。

会话 webhook 调用流程

创建会话时,您可以提供一个 webhook URL 以接收会话状态更新。这比轮询 API 更高效地管理会话。

下图序列图说明了会话 webhook 的调用流程。

最后更新于

这有帮助吗?