Skip to content

MCTRoomListService API 参考

服务器地址: http://127.0.0.1:30147

Swagger UI: http://127.0.0.1:30147/swagger


房间管理 API

1. 创建房间

创建一个新的联机房间。

请求:

http
POST /api/room/create
Content-Type: application/json

{
  "roomCode": "房间代码",
  "hostIp": "房主IP地址"
}

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/create" -Method POST -ContentType "application/json" -Body '{"roomCode": "APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG", "hostIp": "127.0.0.1"}'

响应:

json
{
  "success": true,
  "message": "房间创建成功",
  "data": {
    "roomCode": "APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG",
    "hostPlayerId": "房主玩家ID"
  }
}

2. 获取房间信息

获取指定房间的详细信息。

请求:

http
GET /api/room/{roomCode}

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG" -Method GET

响应:

json
{
  "success": true,
  "message": "房间信息",
  "data": {
    "roomCode": "APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG",
    "hostIp": "127.0.0.1",
    "createdAt": "2025-03-28T10:30:00",
    "playerCount": 1
  }
}

3. 关闭房间

房主关闭房间。

请求:

http
POST /api/room/{roomCode}/close

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/close" -Method POST

响应:

json
{
  "success": true,
  "message": "房间已关闭"
}

玩家管理 API

4. 加入房间

玩家加入指定房间。

请求:

http
POST /api/room/{roomCode}/player/join
Content-Type: application/json

{
  "nickname": "玩家昵称",
  "ip": "玩家IP地址",
  "port": 25565
}

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/player/join" -Method POST -ContentType "application/json" -Body '{"nickname": "测试玩家", "ip": "127.0.0.1", "port": 25565}'

响应:

json
{
  "success": true,
  "message": "加入成功",
  "data": {
    "playerId": "玩家唯一ID",
    "nickname": "测试玩家",
    "ip": "127.0.0.1",
    "port": 25565,
    "joinedAt": "2025-03-28T10:35:00"
  }
}

5. 获取玩家列表

获取房间内的所有玩家列表。

请求:

http
GET /api/room/{roomCode}/player/list

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/player/list" -Method GET

响应:

json
{
  "success": true,
  "message": "玩家列表",
  "data": [
    {
      "id": "玩家ID",
      "nickname": "房主",
      "ip": "127.0.0.1",
      "port": 25565,
      "isHost": true,
      "version": "MCT_1.0.0_Windows",
      "joinedAt": "2025-03-28T10:30:00",
      "lastHeartbeat": "2025-03-28T10:40:00"
    },
    {
      "id": "玩家ID2",
      "nickname": "测试玩家",
      "ip": "127.0.0.1",
      "port": 0,
      "isHost": false,
      "version": "MCT_1.0.0_Windows",
      "joinedAt": "2025-03-28T10:35:00",
      "lastHeartbeat": "2025-03-28T10:40:00"
    }
  ]
}

6. 踢出玩家

房主踢出指定玩家。

请求:

http
POST /api/room/{roomCode}/player/kick
Content-Type: application/json

{
  "playerId": "要踢出的玩家ID"
}

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/player/kick" -Method POST -ContentType "application/json" -Body '{"playerId": "玩家ID"}'

响应:

json
{
  "success": true,
  "message": "玩家已被踢出"
}

7. 离开房间

玩家主动离开房间。

请求:

http
POST /api/room/{roomCode}/player/{playerId}/leave

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/player/玩家ID/leave" -Method POST

响应:

json
{
  "success": true,
  "message": "已离开房间"
}

8. 心跳检测

保持连接活跃,检测是否被踢出。必须每 3 秒发送一次。

请求:

http
POST /api/room/{roomCode}/player/heartbeat
Content-Type: application/json

{
  "playerId": "玩家ID"
}

PowerShell 调用示例:

powershell
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/APADVXNH-14ACRNHP-D6JMAXLIRAEBX7CG/player/heartbeat" -Method POST -ContentType "application/json" -Body '{"playerId": "玩家ID"}'

响应:

json
{
  "success": true,
  "message": "心跳正常",
  "data": {
    "isKicked": false
  }
}

完整流程示例

PowerShell 完整示例

powershell
# 1. 创建房间
$roomCode = "TEST-ROOM-001"
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/create" -Method POST -ContentType "application/json" -Body "{`"roomCode`": `"$roomCode`", `"hostIp`": `"127.0.0.1`"}"

# 2. 玩家加入
$joinResult = Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/$roomCode/player/join" -Method POST -ContentType "application/json" -Body '{"nickname": "玩家1", "ip": "127.0.0.1", "port": 25565}'
$playerId = $joinResult.data.playerId

# 3. 获取玩家列表
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/$roomCode/player/list" -Method GET

# 4. 发送心跳
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/$roomCode/player/heartbeat" -Method POST -ContentType "application/json" -Body "{`"playerId`": `"$playerId`"}"

# 5. 玩家离开
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/$roomCode/player/$playerId/leave" -Method POST

# 6. 关闭房间
Invoke-RestMethod -Uri "http://127.0.0.1:30147/api/room/$roomCode/close" -Method POST

错误响应

所有 API 在失败时返回统一格式:

json
{
  "success": false,
  "message": "错误描述",
  "data": null
}

常见错误信息

错误信息说明
房间不存在房间代码错误或房间已关闭
房间已满房间达到最大玩家数限制
玩家不存在玩家 ID 错误或玩家已离开
不能踢出房主尝试踢出房主

数据模型

Room (房间)

字段类型说明
roomCodestring房间代码
hostIpstring房主 IP 地址
createdAtdatetime创建时间
playerCountint玩家数量

Player (玩家)

字段类型说明
idstring玩家唯一 ID
nicknamestring玩家昵称
ipstringIP 地址
portint端口号
isHostbool是否房主
versionstringMCT 版本信息
joinedAtdatetime加入时间
lastHeartbeatdatetime最后心跳时间

ApiResponse (API 响应)

字段类型说明
successbool是否成功
messagestring消息描述
dataT响应数据

Released under the MIT License