这是使用Bun运行时的Minecraft服务器查询API。
- 查询Java版Minecraft服务器状态
- 查询基岩版(Bedrock)Minecraft服务器状态(优化速度)
- 自动识别服务器类型(Java版或基岩版)
- 获取服务器版本、在线人数、最大人数等信息
- 精确测量服务器延迟(ping),针对Java版和基岩版分别优化
- 并行查询优化,提高自动识别速度
确保已安装Bun:
# 安装Bun (如果尚未安装)
curl -fsSL https://bun.sh/install | bash安装依赖:
cd bun
bun install创建.env文件并设置以下变量:
PORT=3000
NODE_ENV=production
bun devbun startGET /
响应:
{
"success": true,
"message": "API运行正常",
"time": "2023-06-01T12:00:00.000Z"
}GET /mcserver?ip=服务器IP&port=服务器端口&edition=服务器版本&auto=是否自动识别
参数:
ip: 服务器IP或域名 (必填)port: 服务器端口 (可选,Java版默认25565,基岩版默认19132)edition: 服务器版本 (可选,"java"或"bedrock",默认为"java")auto: 是否自动识别服务器类型 (可选,"true"或"false",默认为"false")
响应示例:
{
"success": true,
"data": {
"version": "1.20.4",
"online_players": 10,
"max_players": 100,
"description": "这是一个Minecraft服务器",
"favicon": "data:image/png;base64,...",
"ping": 50,
"server_address": "mc.example.com:25565",
"edition": "java"
}
}当启用自动识别时(auto=true),系统会并行查询Java版和基岩版:
{
"success": true,
"data": {
"version": "1.20.4",
"online_players": 10,
"max_players": 100,
"description": "这是一个Minecraft服务器",
"favicon": "data:image/png;base64,...",
"ping": 50,
"server_address": "mc.example.com:25565",
"edition": "java"
},
"detected": true,
"type": "java"
}GET /bedrock?ip=服务器IP&port=服务器端口
参数:
ip: 服务器IP或域名 (必填)port: 服务器端口 (可选,默认19132)
响应示例:
{
"success": true,
"data": {
"version": "1.20.4",
"online_players": 5,
"max_players": 50,
"description": "这是一个基岩版Minecraft服务器",
"ping": 30,
"server_address": "mc.example.com:19132",
"edition": "bedrock"
}
}GET /auto?ip=服务器IP&javaPort=Java版端口&bedrockPort=基岩版端口
参数:
ip: 服务器IP或域名 (必填)javaPort: Java版服务器端口 (可选,默认25565)bedrockPort: 基岩版服务器端口 (可选,默认19132)
响应示例:
{
"success": true,
"data": {
"version": "1.20.4",
"online_players": 10,
"max_players": 100,
"description": "这是一个Minecraft服务器",
"ping": 50,
"server_address": "mc.example.com:25565",
"edition": "java"
},
"detected": true,
"type": "java"
}如果自动识别失败:
{
"success": false,
"message": "无法自动检测服务器类型,请手动指定edition参数",
"error": "自动检测失败",
"javaError": "连接超时",
"bedrockError": "连接被拒绝"
}API采用多种技术优化性能和响应速度:
-
并行查询:
- 自动识别模式下同时查询Java版和基岩版服务器
- 使用Promise.race机制,一旦有服务器响应就立即返回结果
- 大幅提高自动识别速度,通常仅需等待最快响应的服务器
-
基岩版查询优化:
- 减少基岩版查询超时时间从原来的默认值到只有2秒
- 简化基岩版ping测量,减少ping请求次数,加快响应
- 为基岩版查询增加单独的超时控制,不影响Java版查询
- 在自动识别中优先处理更快响应的查询结果
-
超时控制:
- 所有查询设置合理的超时限制
- Java版查询保持5秒超时
- 基岩版查询减少至2秒超时
- 基岩版ping测量减少至1.2秒超时
- 避免查询卡住,确保API快速响应
-
优化的延迟测量:
- Java版使用TCP连接测量网络延迟
- 基岩版使用优化的UDP协议直接测量延迟,且使用平均值计算替代中位数,提高速度
API采用不同的方法测量Java版和基岩版服务器的延迟:
- 使用TCP连接时间测量网络延迟
- 从服务器响应中获取ping值
- 选择最准确的一种作为最终值
- 使用优化的UDP协议直接测量延迟
- 发送较少的ping请求(仅2次),减少等待时间
- 使用平均值而非中位数计算,加快处理速度
- 设置更短的超时时间(1.2秒),避免长时间等待
- 提供更快的响应,避免不必要的延迟