对等连接的解决方法
匹配的最终结果是一个匹配项 - 满足队列规则的票证集合。 对于具有专用服务器的游戏,匹配项 ID 是唯一的,可以用于标识应该一起玩游戏的玩家组。
但是在对等情况下,游戏需要相互传递连接信息。 本教程介绍执行此操作的解决方法。
注意
当前未正式支持匹配中的对等连接。 请考虑 PlayFab Party,或联系我们以了解详细信息。
指定 IP 地址作为属性
与使用票证指定属性类似,可以将任意值(如 IP 地址)指定为属性。 无需符合规则。
POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
"Creator": {
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"IP": "123.234.123.12"
}
}
},
"MembersToMatchWith": [],
"GiveUpAfterSeconds": 2,
"QueueName": "IPExampleQueue"
}
从比赛中检索所有玩家 IP
调用 GetMatch 时,将标志 ReturnMemberAttributes
指定为 true
可返回每个票证的属性。 这会包括指定 IP 地址。
{
"code": 200,
"status": "OK",
"data": {
"MatchId": "3d58dc0f-2eb6-4162-a2e0-1ed6ac5ea551",
"Members": [
{
"TeamId": "",
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"IP": "123.234.123.12"
}
}
},
{
"TeamId": "",
"Entity": {
"Id": "562D72A5B184F612",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"IP": "123.234.123.12"
}
}
}
]
}
}
注意
虽然这可用于交换 IP,但无法保证客户端之间的连接。