@lzpenguin/server 1.0.6 → 1.0.7

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.
Files changed (2) hide show
  1. package/README.md +2 -163
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -37,80 +37,6 @@ server.init({
37
37
  });
38
38
  ```
39
39
 
40
- ## 新特性 🎉
41
-
42
- ### 同步优化(v2.0+)
43
-
44
- 我们对同步机制进行了全面优化,提供更可靠和高效的数据同步:
45
-
46
- #### 1. **时间戳和序列号**
47
- - ✅ 每条消息都包含服务器时间戳和序列号
48
- - ✅ 自动检测消息丢失和延迟警告
49
- - ✅ 确保数据按正确顺序处理
50
- - ✅ 实时显示网络延迟和序列号状态
51
-
52
- ```javascript
53
- server.onData((data) => {
54
- console.log('时间戳:', data.timestamp);
55
- console.log('序列号:', data.sequence);
56
- console.log('数据:', data.world);
57
- });
58
- ```
59
-
60
- #### 2. **操作确认机制**
61
- - 支持回调确认每个更新操作
62
- - 自动超时检测(5秒)
63
- - 返回唯一操作ID用于追踪
64
-
65
- ```javascript
66
- server.update({
67
- world: { score: 100 }
68
- }, (error, result) => {
69
- if (error) {
70
- console.error('更新失败:', error);
71
- } else {
72
- console.log('更新已确认:', result);
73
- }
74
- });
75
- ```
76
-
77
- #### 3. **增量更新**
78
- - 只发送变化的数据,节省带宽
79
- - 支持数组追加操作
80
- - 特别适合笔画等增量数据
81
-
82
- ```javascript
83
- server.updateDelta({
84
- world: {
85
- strokes: {
86
- $append: [newStroke] // 只追加新笔画
87
- }
88
- }
89
- }, (error, result) => {
90
- console.log('增量更新完成');
91
- });
92
- ```
93
-
94
- #### 4. **自适应推送频率**
95
- - 服务器根据活动情况动态调整推送频率
96
- - 高活动:50ms 推送一次
97
- - 中活动:100ms 推送一次
98
- - 低活动:200ms 推送一次
99
- - 无活动:500ms 推送一次
100
-
101
- #### 5. **统计信息**
102
- - 实时查看连接状态和同步统计
103
- - 监控消息丢失和延迟
104
-
105
- ```javascript
106
- const stats = server.getStats();
107
- console.log('连接状态:', stats.connected);
108
- console.log('本地序列号:', stats.localSequence);
109
- console.log('最后接收序列号:', stats.lastReceivedSequence);
110
- console.log('待确认操作数:', stats.pendingOperations);
111
- console.log('更新次数:', stats.updateCount);
112
- ```
113
-
114
40
  ## API
115
41
 
116
42
  ### 构造函数
@@ -168,20 +94,9 @@ server.init({
168
94
  部分更新数据(合并到现有数据,不替换)。
169
95
 
170
96
  ```javascript
171
- // 基本更新(不带确认)
97
+ // 更新世界数据
172
98
  server.update({ world: { score: 200 } });
173
99
 
174
- // 带确认回调的更新(推荐)
175
- server.update({
176
- world: { score: 200 }
177
- }, (error, result) => {
178
- if (error) {
179
- console.error('更新失败:', error);
180
- } else {
181
- console.log('更新已确认');
182
- }
183
- });
184
-
185
100
  // 更新玩家数据
186
101
  server.update({
187
102
  self: {
@@ -197,12 +112,6 @@ server.update({
197
112
  });
198
113
  ```
199
114
 
200
- **参数:**
201
- - `updateData`: 要更新的数据对象
202
- - `callback` (可选): 确认回调函数 `(error, result) => {}`
203
-
204
- **返回值:** 操作ID(字符串),可用于追踪操作
205
-
206
115
  **响应数据(通过 onData 接收):**
207
116
  ```json
208
117
  {
@@ -235,11 +144,9 @@ unsubscribe();
235
144
  **数据格式:**
236
145
  ```json
237
146
  {
238
- "timestamp": 1705123456789,
239
- "sequence": 42,
240
147
  "world": { "score": 200, "level": 1 },
241
148
  "self": {
242
- "public": { "name": "Player1", "position": { "x": 15, y: 25 } },
149
+ "public": { "name": "Player1", "position": { "x": 15, "y": 25 } },
243
150
  "private": { "health": 90, "mana": 50 }
244
151
  },
245
152
  "players": [
@@ -249,74 +156,6 @@ unsubscribe();
249
156
  }
250
157
  ```
251
158
 
252
- **字段说明:**
253
- - `timestamp`: 服务器时间戳(毫秒)
254
- - `sequence`: 消息序列号(用于检测消息丢失)
255
- - `world`: 世界数据
256
- - `self`: 当前玩家数据
257
- - `players`: 其他玩家数据
258
-
259
- ### 4. updateDelta() - 增量更新 ✨
260
-
261
- 只发送变化的数据,适合频繁更新的场景(如画板笔画)。
262
-
263
- ```javascript
264
- // 追加新笔画(不发送整个数组)
265
- const newStroke = {
266
- id: 'stroke_123',
267
- points: [{ x: 0, y: 0 }, { x: 10, y: 10 }],
268
- color: '#FF0000',
269
- width: 2
270
- };
271
-
272
- server.updateDelta({
273
- world: {
274
- strokes: {
275
- $append: [newStroke] // 使用 $append 标记表示追加
276
- }
277
- }
278
- }, (error, result) => {
279
- if (!error) {
280
- console.log('笔画已添加');
281
- }
282
- });
283
- ```
284
-
285
- **参数:**
286
- - `delta`: 增量数据对象(支持 `$append` 等特殊操作)
287
- - `callback` (可选): 确认回调函数
288
-
289
- **返回值:** 操作ID
290
-
291
- ### 5. getStats() - 获取统计信息 ✨
292
-
293
- 获取实时同步统计信息,用于监控和调试。
294
-
295
- ```javascript
296
- const stats = server.getStats();
297
- console.log(stats);
298
- // {
299
- // connected: true,
300
- // initialized: true,
301
- // localSequence: 10,
302
- // lastReceivedSequence: 8,
303
- // lastReceivedTimestamp: 1705123456789,
304
- // pendingOperations: 2,
305
- // updateCount: 10,
306
- // lastUpdateTime: 1705123456789
307
- // }
308
- ```
309
-
310
- **返回值:**
311
- - `connected`: 是否已连接
312
- - `initialized`: 是否已初始化
313
- - `localSequence`: 本地发送的序列号
314
- - `lastReceivedSequence`: 最后接收的序列号
315
- - `lastReceivedTimestamp`: 最后接收的时间戳
316
- - `pendingOperations`: 待确认的操作数量
317
- - `updateCount`: 总更新次数
318
- - `lastUpdateTime`: 最后更新时间
319
-
320
159
  **推送时机:** init 响应、定时推送(每 0.2 秒)、init/update 后立即推送
321
160
 
322
161
  ## 联机游戏示例
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lzpenguin/server",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Riffle 游戏服务器 WebSocket 客户端 SDK",
5
5
  "license": "ISC",
6
6
  "author": "lzpenguin",