Ping Service
Ping Service
获取一个游戏下所有启用的游戏地域的端口信息,用于ping测试延迟。
授权
使用 Basic Authorization 来进行鉴权 (推荐服务器端程序使用). 步骤如下:
在 UOS 网站上获取当前需要使用的 UOS APP 的 AppId 和 AppServiceSecret
注:此处 AppId 和 AppServiceSecret,可在 UOS 网站上获取


在请求任意 API 的 Request Header 中增加 Header:
- Authorization: Basic base64(appId:appServiceSecret)
示例代码
API 列表
Ping Service
基本信息
| URL | Method |
|---|---|
https://multiverse.scaling.unity.cn/v1/game/games/{appId}/ping-services | GET |
输出示例
{
"gameId": "string",
"pingServiceEndpoints": [
{
"regionId": "string",
"httpEndpoint": "string",
"httpPort": 0,
"udpEndpoint": "string",
"udpPort": 0
}
]
}测试示例
通过 Ping Service 获取到节点列表后,以 C# 为例, 我们可以通过以下示例程序来测试客户端与服务器之间的延时。
/// 将下述代码中的 UDP Endpoint / UDP Port 替换成 Ping Service 中获取到的对应的地域的 udpEndpoint / udpPort
/// 该检测方法也可以直接用于游戏逻辑中用于检测游戏与服务器之间的延时
/// 同一地域的 udpEndpoint / udpPort 是固定的, 可以在游戏代码中直接使用已经获取到的 IP/Port
using System.Net;
using System.Net.Sockets;
using System.Text;
//将 UDP Endpoint 替换成 getPingService 获取到到 udpEndpoint
string address = "UDP Endpoint";
if (args.Length > 0)
address = args[0];
//将 UDP Port 替换成 getPingService 获取到到 udpPort
int port = UDP Port;
if (args.Length > 1)
port = int.Parse(args[1]);
var udpClient = new UdpClient(11000);
try
{
for (;;)
{
udpClient.Connect(address, port);
var sendBytes = Encoding.ASCII.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString());
udpClient.Send(sendBytes, sendBytes.Length);
var remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
var receiveBytes = udpClient.Receive(ref remoteIpEndPoint);
var returnData = Encoding.ASCII.GetString(receiveBytes);
var timestamp = long.Parse(returnData);
var latency = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - timestamp;
Console.WriteLine($"Latency: {latency}ms");
Thread.Sleep(1000);
}
}
catch (Exception e ) {
Console.WriteLine(e.ToString());
}