Spaces:
Sleeping
Sleeping
File size: 2,436 Bytes
c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 7cb3a7a c9b1033 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# 协议规范
本文档定义了 InterConnect-Server 使用的 REST 和 WebSocket 协议格式。所有负载均为 JSON 格式。
## 认证 (Authentication)
- REST: 在请求头中发送 `Authorization: Bearer <API_KEY>`。
- WebSocket: 连接到 `ws://<host>/ws?api_key=<API_KEY>`(HTTPS 下使用 `wss`)。
## 事件对象 (Event Object)
事件通过 REST 发送到服务器,并广播给 WebSocket 客户端。
服务器仅验证必填字段和 `event_type` 值。
`data` 负载会原样传递。
必填字段:
- `event_type` (字符串)
- `server_name` (字符串)
- `timestamp` (字符串, ISO 8601)
- `data` (对象)
有效的 `event_type` 值:
- `player_join`
- `player_leave`
- `message`
- `server_command`
事件示例:
```json
{
"event_type": "player_join",
"server_name": "survival-01",
"timestamp": "2024-01-21T12:34:56.789Z",
"data": {
"player": "Steve"
}
}
```
## REST 端点 (REST Endpoints)
### POST /api/events
提交一个事件以进行存储和广播。
请求:
- 认证:任意有效密钥
- `Content-Type: application/json`
- Body: 事件对象
响应:
```json
{
"message": "Event received and broadcasted"
}
```
错误:
- `400` 如果缺少必填字段或 `event_type` 无效
- `401` 如果 API 密钥丢失/无效
### POST /api/server/command
发送服务器命令。这也将广播一个 `server_command` 事件。
请求:
- 认证:Regular 或 Admin 密钥
- `Content-Type: application/json`
- Body:
```json
{
"command": "say Hello from API",
"server_id": "survival-01"
}
```
注意:
- 当 Admin 密钥未绑定到服务器时,必须提供 `server_id`。
- 服务器对 Admin 命令强制执行允许/阻止列表。
响应:
```json
{
"message": "Command sent successfully",
"command": "say Hello from API",
"server_id": "survival-01"
}
```
## WebSocket 消息 (WebSocket Messages)
### 客户端到服务器
Ping:
```json
{ "type": "ping" }
```
Pong 响应:
```json
{ "type": "pong" }
```
### 服务器到客户端
广播事件:
```json
{
"type": "minecraft_event",
"event": {
"event_type": "message",
"server_name": "survival-01",
"timestamp": "2024-01-21T12:34:56.789Z",
"data": {
"player": "Alex",
"message": "Hello world"
}
},
"source_key_id_prefix": "a1b2c3d4"
}
```
`source_key_id_prefix` 是提交事件或命令的 API 密钥 ID 的前 8 个字符。它不是 API 密钥本身。
|