@lzpenguin/server 1.1.10 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/index.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,8 +23,8 @@ const server = new RiffleServer({
|
|
|
23
23
|
// 1. 监听数据推送(init 成功后每 0.2 秒自动推送,调用 init/update 后立即推送)
|
|
24
24
|
server.onData((data) => {
|
|
25
25
|
console.log('World:', data.world); // 世界数据
|
|
26
|
-
console.log('Self:', data.self); // 自己的公开数据(包含 name 字段)
|
|
27
|
-
console.log('Players:', data.players); // 其他玩家的公开数据(包含 name 字段)
|
|
26
|
+
console.log('Self:', data.self); // 自己的公开数据(包含 name / avatar / online 字段)
|
|
27
|
+
console.log('Players:', data.players); // 其他玩家的公开数据(包含 name / avatar / online 字段)
|
|
28
28
|
// 注意:self 和 players[i] 结构相同,都只包含公开数据
|
|
29
29
|
});
|
|
30
30
|
|
|
@@ -51,17 +51,19 @@ server.update({
|
|
|
51
51
|
```json
|
|
52
52
|
{
|
|
53
53
|
"world": { "score": 0, "level": 1 },
|
|
54
|
-
"self": { "name": "Player1", "x": 100, "y": 100 },
|
|
54
|
+
"self": { "name": "Player1", "avatar": "https://...", "online": true, "x": 100, "y": 100 },
|
|
55
55
|
"players": [
|
|
56
|
-
{ "name": "Player2", "x": 10, "y": 20 },
|
|
57
|
-
{ "name": "Player3", "x": 30, "y": 40 }
|
|
56
|
+
{ "name": "Player2", "avatar": "https://...", "online": true, "x": 10, "y": 20 },
|
|
57
|
+
{ "name": "Player3", "avatar": "https://...", "online": false, "x": 30, "y": 40 }
|
|
58
58
|
]
|
|
59
59
|
}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
**关于 name 字段:**
|
|
62
|
+
**关于 name / avatar / online 字段:**
|
|
63
63
|
- `self.name` 和 `players[i].name` 字段**一定会存在**,包含用户的昵称或用户名
|
|
64
|
-
-
|
|
64
|
+
- `self.avatar` 和 `players[i].avatar` 字段由服务器根据用户头像覆盖
|
|
65
|
+
- `self.online` 和 `players[i].online` 字段存储在玩家数据中,`/api/v1/server/ws` 连接建立时自动为 true,断开时自动为 false
|
|
66
|
+
- 你不需要在 `init()` 或 `update()` 时设置 name / avatar / online 字段,服务器会直接返回
|
|
65
67
|
|
|
66
68
|
## API 说明
|
|
67
69
|
|
package/index.js
CHANGED
|
@@ -204,6 +204,28 @@ export class RiffleServer {
|
|
|
204
204
|
|
|
205
205
|
// 检查是否是数据消息(包含 world、self、players 字段)
|
|
206
206
|
if (message.world !== undefined && message.self !== undefined && message.players !== undefined) {
|
|
207
|
+
if (message.self && typeof message.self === 'object') {
|
|
208
|
+
if (message.self.online === undefined) {
|
|
209
|
+
message.self.online = false;
|
|
210
|
+
}
|
|
211
|
+
if (message.self.avatar === undefined) {
|
|
212
|
+
message.self.avatar = '';
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (Array.isArray(message.players)) {
|
|
216
|
+
message.players = message.players.map((player) => {
|
|
217
|
+
if (player && typeof player === 'object') {
|
|
218
|
+
if (player.online === undefined) {
|
|
219
|
+
player.online = false;
|
|
220
|
+
}
|
|
221
|
+
if (player.avatar === undefined) {
|
|
222
|
+
player.avatar = '';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return player;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
|
|
207
229
|
// 如果还未初始化,这可能是 init 响应
|
|
208
230
|
if (!this.isInitialized && message.self) {
|
|
209
231
|
this.isInitialized = true;
|