连接流

连接流是分配服务Relay 服务器上保留空位,以便将玩家分组安排到匹配中的过程。此过程涉及两类玩家:主机玩家和加入玩家。以下列表概述了连接过程的步骤。

  1. 主机玩家请求分配
  2. 分配服务选择 Relay 服务器
  3. 分配服务向主机玩家发送连接数据
  4. 主机玩家绑定到 Relay 服务器
  5. 主机玩家请求加入代码
  6. 分配服务向主机玩家返回加入代码
  7. 主机玩家与加入玩家共享加入代码
  8. 加入玩家使用加入代码
  9. 分配服务向加入玩家发送连接数据
  10. 加入玩家绑定到 Relay 服务器
  11. 加入玩家发送连接请求

主机玩家请求分配

主机玩家从分配服务请求分配,从而启动连接流。分配请求中包含分配允许的最大连接数,也可能包含特定地区。如果请求中不包含地区,则分配服务会使用 QoS 为请求选择最佳地区。

分配服务选择 Relay 服务器

分配服务收到主机玩家的请求,然后选择合适的 Relay 服务器。Relay 服务器选择取决于允许的最大连接数和地区。

分配服务找到合适的 Relay 服务器后,将在 Relay 服务器上为游戏会话预留空间。此时,Relay 服务器还会生成唯一密钥。Relay 服务器向分配服务返回密钥,同时返回的还有 Relay 服务器 IP、Relay 服务器端口以及连接数据

分配服务向主机玩家发送连接数据

分配服务向主机玩家的游戏客户端发送 Relay 服务器连接数据。

主机玩家绑定到 Relay 服务器

主机使用分配请求回复中包含的数据向所选 Relay 服务器发送 BIND 消息BIND 消息中包含连接数据、接受模式、随机数和 HMAC。如果主机未在进行分配后 60 秒内向 Relay 服务器发送 BIND 消息,分配会因无活动而超时

如果请求中的信息不准确,Relay 服务器将向主机客户端发送 BIND_RECEIVED 消息来确认绑定请求。

注意:一般情况下,您应在调用分配和加入 API 之后再发送 BIND 消息,这些操作可以检索 Relay 服务器的目标地址,从而与 BIND 消息配合使用。

主机玩家请求加入代码

在绑定到 Relay 服务器后,主机玩家可以从分配服务请求加入代码

分配服务向主机玩家返回加入代码

分配服务生成加入代码,并将向主机玩家返回加入代码。分配服务返回的加入代码唯一地表示主机玩家向 Relay 服务器的分配,并且允许加入玩家绑定到该 Relay 服务器并连接到主机玩家。

主机玩家与加入玩家共享加入代码

主机玩家可通过口头告知、文字消息或 Lobby 等任意方法与其他玩家共享唯一加入代码。为方便共享,加入代码简短易记。

使用加入代码向分配服务发送加入请求的玩家称为加入玩家。

注意:无论有多少加入玩家,只要数量不超过最初分配请求中指定的最大连接数,就可以使用同一个加入代码。

加入玩家使用加入代码

加入玩家使用从主机玩家处获得的加入代码向分配服务发送加入请求。

注意:“加入”是指加入玩家(非主机玩家)客户端加入主机客户端的游戏会话的操作,此操作本质上是对 Relay 后端服务的又一次分配调用。

分配服务向加入玩家发送连接数据

分配服务使用加入代码查找主机玩家的分配并向加入玩家返回数据。

分配服务的回复中包含 Relay 服务器 IP 地址、Relay 服务器端口、密钥、加密的加入玩家连接数据、加入玩家的分配 ID 以及加密的主机连接数据。加入玩家可以使用密钥进行解密,并使用主机连接数据连接到主机。

加入玩家绑定到 Relay 服务器

加入玩家使用分配服务的加入请求回复中包含的连接数据向 Relay 服务器发送 BIND 消息

成功后,Relay 服务器将向加入玩家的游戏客户端发送 BIND_RECEIVED 消息来进行确认。

注意:一般情况下,您应在调用分配和加入 API 之后再发送 BIND 消息,这些操作可以检索 Relay 服务器的目标地址,从而与 BIND 消息配合使用。

加入玩家发送连接请求

绑定到主机玩家绑定的同一 Relay 服务器后,加入玩家将向主机玩家发送连接请求。如果连接请求成功,加入玩家和主机玩家将可以通过 Relay 服务器互相发送数据。