@yyyu-star/arcade-kit 0.11.0 → 0.11.2
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/CHANGELOG.md +20 -0
- package/README.md +8 -2
- package/dist/client.d.ts +41 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +119 -43
- package/dist/client.js.map +1 -1
- package/dist/fun-logic.d.ts +4 -1
- package/dist/fun-logic.d.ts.map +1 -1
- package/dist/fun-logic.js +7 -1
- package/dist/fun-logic.js.map +1 -1
- package/dist/room.d.ts +5 -0
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +24 -5
- package/dist/room.js.map +1 -1
- package/dist/table-fun.d.ts +2 -0
- package/dist/table-fun.d.ts.map +1 -1
- package/dist/table-fun.js +15 -7
- package/dist/table-fun.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +119 -41
- package/src/fun-logic.ts +8 -1
- package/src/room.ts +28 -4
- package/src/table-fun.ts +15 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## 0.11.2
|
|
4
|
+
|
|
5
|
+
- **table-fun 窄屏**:互动面板(440 宽)、点头像的菜单(432 宽)在 390 竖屏上伸出屏幕(麻将接入时发现,先用 CSS 收窄了)。盒子宽度改成 `min(<宽度>px, calc(100vw - 16px))`,
|
|
6
|
+
两边各留 8px;收窄后一排 8 个道具会折成两排,菜单的高度跟着内容走,量完按真实高度重新避开禁区。宽屏不变。接口不变。
|
|
7
|
+
- `fun-logic` 加 `fitMenuWidth(宽度, 屏幕宽, 留边 = 8)`,`placeMenu` 按它收窄后的宽度摆(和页面上的 CSS 一致)。
|
|
8
|
+
- 测试:`fitMenuWidth` 的取值,390 竖屏上头像在左、中、右、上、下时面板和菜单都夹在 [8, 382] 里。另在本机用演示页(`demo/table-fun.html`)按 390×844 实测:
|
|
9
|
+
菜单 8–382、面板 8–382,都在屏幕里、内容没被截;改回固定宽度时两个都伸到 440 以外(反证)。
|
|
10
|
+
|
|
11
|
+
## 0.11.1
|
|
12
|
+
|
|
13
|
+
联机稳定性(平台代理只读审阅 kit 0.10.2 后列的清单,主线 2026-10-16 派)。协议不变:没有新消息、新字段,旧页面和新房间、新页面和旧房间都照常。
|
|
14
|
+
- **静默死掉的连接**(`client.ts`):心跳和切回前台时发 `ping`,`PONG_WAIT_MS`(8 秒)内什么都没收到就判死、不等 close 直接重连;建连卡在 CONNECTING 超过 `CONNECT_MS`(10 秒)也重连。
|
|
15
|
+
iOS 锁屏、切 App 以后 socket 常常还是 OPEN、不触发 close,以前会一直停在"已连接"、画面冻住。只看"这段时间收到过没有",不比时钟,后台被节流的计时器晚跑不会误判。
|
|
16
|
+
- **切回前台、网络恢复**:`pageshow`、`online` 改听 `window`(以前 `pageshow` 挂在 `document` 上,永远收不到);`online` 时等着重连的马上连;
|
|
17
|
+
`pageshow` 带 `persisted`(从往返缓存回来)旧连接一律作废重连;切回前台时旧连接已经 CLOSING/CLOSED 却没等到 close 的,也扔掉马上连。新选项 `windowEvents`(测试注入)。
|
|
18
|
+
- **闹钟不丢**(`room.ts`):`setAlarm` 出错不再往外抛;内存里的闹钟时间改回"不知道",下一个入口按 `getAlarm()` 重新读、照常重排。以前内存里记着新时间,之后 `planAlarm` 一直以为"已经设了更早的",房间的超时、托管、关房都不触发。
|
|
19
|
+
闹钟里那一次出错的,按存储里实际的闹钟判断要不要 60 秒后再醒。
|
|
20
|
+
- **moveId 去重窗口**:每个座位记最近 8 个做成的 moveId(`recentMoves`,旧房间的状态里没有就当空的),不再只认最后一个:A 的 ack 丢了、之后 B 也做成了,补发 A 仍然只回 ack。
|
|
21
|
+
- 测试:客户端 8 条(判死和不误判、建连超时、online、pageshow persisted、CLOSED 没等到 close、摘掉事件),房间 3 条(补发不是最后一个的 moveId、setAlarm 出错后重排、闹钟里重设失败);每条都做了反证(把对应的那行改坏,测试失败)。
|
|
22
|
+
|
|
3
23
|
## 0.11.0
|
|
4
24
|
|
|
5
25
|
- **牌桌互动组件** `arcade-kit/table-fun`(仓库根 `docs/table-fun.md` 第 0 节"互动第二版"):几个牌桌游戏共用一套,游戏只给头像的屏幕矩形、禁区、发送通道、名场面映射和短语表。
|
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ a daily write-quota meter (`arcade-kit/meter`), a seeded ChaCha20 RNG (`arcade-k
|
|
|
40
40
|
| `arcade-kit/rng` | 两边、规则核心 | ChaCha20(RFC 8439,0.2.0):256 位密钥按"用途 + 序号"分流、拒绝采样的均匀整数、Fisher–Yates 洗牌;纯函数 |
|
|
41
41
|
| `arcade-kit/meter` | 游戏 Worker(Durable Object) | 计量 `RoomMeter`(0.2.0):每天的写入额度、按人和全站的开房名额,游戏原样导出、绑成 `METER` 就行;`meterReport` / `meterLevel`(0.3.0)给房间以外的 DO 记写入、问门槛 |
|
|
42
42
|
| `arcade-kit/game` | 两边、规则测试 | 规则接口 `RoomGame`;`snapshotBytes`:算进房快照最大有多大,游戏在自己的测试里断言上限 |
|
|
43
|
-
| `arcade-kit/client` | 浏览器 | `RoomClient
|
|
43
|
+
| `arcade-kit/client` | 浏览器 | `RoomClient`:退避加抖动重连、切回前台和网络恢复时马上连、认得出静默死掉的连接(0.11.1)、按 seq 去重、没确认的操作按原 moveId 和 baseSeq 重发、一直连不上就停下等用户点重试;`createRoom`、`createText`、`closeText`(0.8.0):开房和给玩家看的默认文案;`detectPlatform`、`withNickname`(0.10.0):独立部署时页面降级、带昵称 |
|
|
44
44
|
| `arcade-kit/testing` | 游戏的测试、本地开发 | 假平台钱包(0.8.0):`WalletService`、`FakeBank`、`walletHttp`,只复刻接口形状和关键规则;不进线上代码 |
|
|
45
45
|
| `arcade-kit/protocol` | 两边 | 消息类型、协议版本、关闭码、房间码格式 |
|
|
46
46
|
|
|
@@ -117,6 +117,10 @@ a daily write-quota meter (`arcade-kit/meter`), a seeded ChaCha20 RNG (`arcade-k
|
|
|
117
117
|
- `onStatus('closed', 关闭码, 原因)`:按码提示(4401 去登录、4005 刷新页面、4503 今天人太多……);4000 带原因 `CLOSE_REASON.quota`(0.2.0)是今天的额度满了、房间在这一副打完时收场,
|
|
118
118
|
页面可以说"今天联机的人太多了,这一副打完先散了,单机照常玩";`onStatus('failed')`:连着 20 次没进得了房间,提示"连不上",用户点了调 `retry()`。
|
|
119
119
|
退避和失败次数在收到 `welcome` 时才清零(被拒的连接也会先 open 再关)。
|
|
120
|
+
- 断线怎么认(0.11.1):每 25 秒的心跳和每次切回前台都发一个 `ping`,`PONG_WAIT_MS`(8 秒)内什么都没收到(房间自动回的 `pong` 也算)就判这条连接死了,
|
|
121
|
+
不等 `close`、直接按 1006 重连——iOS 锁屏、切 App 后 socket 常常还显示 OPEN、也不触发 close。建连卡在 CONNECTING 超过 `CONNECT_MS`(10 秒)同样重连。
|
|
122
|
+
监听 `document` 的 `visibilitychange`、`window` 的 `pageshow` 和 `online`:网络恢复、切回前台时别等退避;从往返缓存(bfcache,`pageshow` 带 `persisted`)回来的页面旧连接一律作废。
|
|
123
|
+
测试和非浏览器环境可以传 `events`、`windowEvents` 注入事件源。
|
|
120
124
|
|
|
121
125
|
## 登录闸门、开房、假钱包(0.8.0)
|
|
122
126
|
|
|
@@ -337,13 +341,14 @@ protected override onEmote(from: number, id: number, to?: number): void {
|
|
|
337
341
|
其中四分之一同类回扔(鸡蛋回拖鞋;同一个电脑 20 秒最多回扔 2 次);名场面输的一方 40% 冲赢家、赢的一方 30% 得意;每手最多主动 2 次;两次反应至少隔 1 秒。
|
|
338
342
|
数字都在 `BOT_REACT`,第六个参数能整个换掉。
|
|
339
343
|
- 电脑的反应只是画面,**出牌决策绝不读它**;真人的短语、道具不记进牌局状态(见上面 `onEmote` 的规矩)。
|
|
340
|
-
- 其他纯函数:`stickerMood`(表情对应的情绪)、`FunCooldown`(冷却)、`FunTally`(护盾、连击、回敬)、`placeMenu
|
|
344
|
+
- 其他纯函数:`stickerMood`(表情对应的情绪)、`FunCooldown`(冷却)、`FunTally`(护盾、连击、回敬)、`placeMenu`(菜单放哪,避开禁区;窄屏按 `fitMenuWidth` 收窄到屏幕宽减 16px,0.11.2)、`funItem`/`stickerId`/`propId`(编号换算),测试在 `test/fun-logic.test.ts`。
|
|
341
345
|
|
|
342
346
|
## 房间怎么守规矩
|
|
343
347
|
|
|
344
348
|
- **只用 `ctx.acceptWebSocket`、一个闹钟**:所有到期时间(房间寿命 3 小时、没人 10 分钟、这一手 30 秒、掉线宽限 60 秒、电脑没算完、停够了(0.5.0))取最早的;
|
|
345
349
|
只有比现在设的更早才 `setAlarm`(它也算一行写入),期限往后推时不动,到点醒来没到期再改。心跳 `ping`/`pong` 由运行时自动应答。
|
|
346
350
|
闹钟时间以 `getAlarm()` 读到的为准;写完状态后广播出错,算好的闹钟照样设;闹钟里游戏代码出错,60 秒后再醒来重试。
|
|
351
|
+
`setAlarm` 自己出错(0.11.1)不往外抛:内存里记的闹钟改回"不知道",下一个入口重新 `getAlarm()`、照常重排;出错的是闹钟里那一次,同样 60 秒后再醒来。
|
|
347
352
|
- **每步最多写 2 行**:房间状态一行(到期时间、计数都在里面),外加需要时的 `setAlarm`。实测:
|
|
348
353
|
- 开房 4 行:建表 2 行(SQLite 记建表也算写入,一个房间只这一次)+ 状态 1 行 + 闹钟 1 行;
|
|
349
354
|
- 进房、出牌 1 行;到点醒来但还没到期只改闹钟 1 行;
|
|
@@ -358,6 +363,7 @@ protected override onEmote(from: number, id: number, to?: number): void {
|
|
|
358
363
|
- 超时代出:先用游戏的 `timeout`,被规则拒了改用 `ai`;还不行就记日志、这一手的期限推后 60 秒(不然闹钟会在当前时刻反复响、每次写一行)。
|
|
359
364
|
- 同一个账号再连一次,旧连接 4001 让位。重连一律发全量快照,不补发漏掉的事件。
|
|
360
365
|
- 客户端重发没确认的操作带原来的 `baseSeq`:牌局变过就回 `stale`,旧操作不会被套到新的一手上。有人进出不算牌局变了。
|
|
366
|
+
- 重复的 moveId 每个座位记最近 8 个(0.11.1,和座位一起存在状态那一行里,不多写):连发 A、B 时 A 的 ack 丢了,补发 A 仍然只回 ack,不轮流的操作不会做第二遍。
|
|
361
367
|
- **硬限制**(4.6):
|
|
362
368
|
- 单条入站消息 4 KB(1009);每连接每秒 5 条、最多攒 10 条(1008);房间一生 3,000 条入站消息;寿命 3 小时;没人 10 分钟——到了就关房间:
|
|
363
369
|
断开所有人(4000)、删闹钟、删存储;
|
package/dist/client.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 浏览器端连接器(docs/platform-backend.md 4.5):
|
|
3
3
|
* - 断线后按指数退避加随机抖动重连;房间每次都回全量快照(welcome),客户端整桌重画,不做增量修补;
|
|
4
|
-
* - 页面从后台切回来(visibilitychange、pageshow)时立刻检查连接:iOS Safari、微信切后台会挂起连接;
|
|
4
|
+
* - 页面从后台切回来(document 的 visibilitychange、window 的 pageshow)、网络恢复(window 的 online)时立刻检查连接:iOS Safari、微信切后台会挂起连接;
|
|
5
|
+
* 从往返缓存(bfcache,pageshow 带 persisted)回来的页面,旧连接一律作废、马上重连(0.11.1);
|
|
6
|
+
* - 静默死掉的连接(0.11.1):iOS 锁屏、切 App 以后 socket 常常还是 OPEN、也不触发 close,发出去的石沉大海。
|
|
7
|
+
* 每次心跳(和切回前台)发 "ping" 以后等 PONG_WAIT_MS,这期间什么都没收到(连房间自动回的 "pong" 都没有)就判它死了:
|
|
8
|
+
* 不等 close,直接扔掉、按断线重连。建连卡在 CONNECTING 超过 CONNECT_MS 也一样。只看"收到过没有",不比时钟,后台节流的计时器晚跑也不会误判;
|
|
5
9
|
* - 收到 1008、1009 或 4000 段关闭码时不重连(违规、房间关了、被别处顶掉、版本太旧、没登录 4401、别的网站 4403);
|
|
6
10
|
* - 平台暂时不可用(1013)照常按退避重连;
|
|
7
11
|
* - 连着 maxFailures 次(默认 20 次,约 4 分钟)都没进得了房间(没收到 welcome)就停下,状态变成 failed,由界面提示"连不上"、让用户点 retry()。
|
|
8
12
|
* 退避和失败次数都在收到 welcome 时才清零,不在 onopen:被拒的连接也会先 open 再关,按 onopen 清零就会一直快速重连;
|
|
9
13
|
* - 下行消息按 seq 去重,旧的丢掉;上行操作带 moveId 和 baseSeq(做决定时看到的 seq),没收到 ack 的在重连后原样重发:
|
|
10
14
|
* 房间认得出重复的 moveId;牌局在那之后变过的,房间回 stale,不会把旧操作套到新的一手上;
|
|
11
|
-
* - 心跳发纯文本 "ping",房间由运行时自动回 "pong"
|
|
15
|
+
* - 心跳发纯文本 "ping",房间由运行时自动回 "pong"(setWebSocketAutoResponse),不唤醒房间。
|
|
12
16
|
*
|
|
13
17
|
* 浏览器里的计时器(重连、心跳)可以用 setTimeout,"只用一个闹钟"是房间(Durable Object)那边的规矩。
|
|
14
18
|
*/
|
|
@@ -38,15 +42,17 @@ export interface RoomClientOptions<V> {
|
|
|
38
42
|
random?: () => number;
|
|
39
43
|
setTimer?: (fn: () => void, ms: number) => unknown;
|
|
40
44
|
clearTimer?: (t: unknown) => void;
|
|
41
|
-
/**
|
|
42
|
-
events?:
|
|
43
|
-
|
|
44
|
-
removeEventListener(type: string, fn: () => void): void;
|
|
45
|
-
};
|
|
45
|
+
/** 页面事件来源:events 收 visibilitychange(默认 document),windowEvents 收 pageshow、online(默认 window,没给时用 events);没有就不监听 */
|
|
46
|
+
events?: EventSourceLike;
|
|
47
|
+
windowEvents?: EventSourceLike;
|
|
46
48
|
isHidden?: () => boolean;
|
|
47
49
|
/** 连着几次没进得了房间(没收到 welcome;被拒的连接也会先 open 再关)就停下,默认 20 */
|
|
48
50
|
maxFailures?: number;
|
|
49
51
|
}
|
|
52
|
+
export interface EventSourceLike {
|
|
53
|
+
addEventListener(type: string, fn: (ev?: unknown) => void): void;
|
|
54
|
+
removeEventListener(type: string, fn: (ev?: unknown) => void): void;
|
|
55
|
+
}
|
|
50
56
|
export interface WebSocketLike {
|
|
51
57
|
readyState: number;
|
|
52
58
|
onopen: ((ev: unknown) => void) | null;
|
|
@@ -61,6 +67,10 @@ export interface WebSocketLike {
|
|
|
61
67
|
send(data: string): void;
|
|
62
68
|
close(code?: number, reason?: string): void;
|
|
63
69
|
}
|
|
70
|
+
/** 发了 ping 以后等多久没收到任何东西就判连接死了(0.11.1)。房间的自动回 pong 不经过游戏代码,正常几十毫秒就到 */
|
|
71
|
+
export declare const PONG_WAIT_MS = 8000;
|
|
72
|
+
/** 建连最多等多久(0.11.1):卡在 CONNECTING 的按一次失败算,重连 */
|
|
73
|
+
export declare const CONNECT_MS = 10000;
|
|
64
74
|
/** 第 n 次重连(从 0 起)的等待:指数退避,上限 15 秒,乘一个 [0.5, 1) 的随机系数(抖动,免得一桌人同时重连)。 */
|
|
65
75
|
export declare function backoffMs(attempt: number, random?: () => number): number;
|
|
66
76
|
export declare class RoomClient<A = unknown, V = unknown> {
|
|
@@ -74,6 +84,10 @@ export declare class RoomClient<A = unknown, V = unknown> {
|
|
|
74
84
|
private lastSeq;
|
|
75
85
|
private retryTimer;
|
|
76
86
|
private beatTimer;
|
|
87
|
+
/** 探活(0.11.1):发了 ping 还没收到任何东西;到点还是 true 就判死 */
|
|
88
|
+
private probing;
|
|
89
|
+
private probeTimer;
|
|
90
|
+
private connectTimer;
|
|
77
91
|
/** 没收到 ack 的操作:重连后按原 moveId 重发 */
|
|
78
92
|
private pending;
|
|
79
93
|
private moveCounter;
|
|
@@ -86,6 +100,11 @@ export declare class RoomClient<A = unknown, V = unknown> {
|
|
|
86
100
|
private emoteTimer;
|
|
87
101
|
private readonly opts;
|
|
88
102
|
private readonly onWake;
|
|
103
|
+
/** pageshow 带 persisted:页面是从往返缓存里拿回来的,旧连接不能信 */
|
|
104
|
+
private readonly onPageShow;
|
|
105
|
+
private readonly onOnline;
|
|
106
|
+
private readonly doc;
|
|
107
|
+
private readonly win;
|
|
89
108
|
constructor(opts: RoomClientOptions<V>);
|
|
90
109
|
/** 发一个操作意图;返回 moveId。没连上时先存着,连上后发。 */
|
|
91
110
|
act(action: A): string;
|
|
@@ -107,10 +126,24 @@ export declare class RoomClient<A = unknown, V = unknown> {
|
|
|
107
126
|
retry(): void;
|
|
108
127
|
get state(): ClientStatus;
|
|
109
128
|
private connect;
|
|
129
|
+
/** 这条连接断了(或者被判死了):最终关闭码停下,没进过房间的累计失败次数,其余按退避重连 */
|
|
130
|
+
private lost;
|
|
131
|
+
/** 不等 close 了:摘掉回调、关掉,按 1006(网络断了)走重连。死连接的 close 可能几分钟后才来,也可能不来 */
|
|
132
|
+
private abandon;
|
|
133
|
+
/** 发一个 ping,PONG_WAIT_MS 内什么都没收到就判死(已经在探就不重复发) */
|
|
134
|
+
private probe;
|
|
110
135
|
/** 带上这次的关闭码:游戏据此区分"网络断了"(1006)和"平台有点忙"(1013)。 */
|
|
111
136
|
private scheduleRetry;
|
|
112
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* 切回前台、网络恢复:
|
|
139
|
+
* - 连着:探一下活(静默死掉的会在 PONG_WAIT_MS 后判死、重连);
|
|
140
|
+
* - 在等退避:别等了,马上连;
|
|
141
|
+
* - 有连接却不是 OPEN、也不在建连(CLOSING、CLOSED 却一直没等到 close,从往返缓存回来常见):扔掉,马上连;
|
|
142
|
+
* - fresh(pageshow 带 persisted):不管什么状态,旧连接一律扔掉重连。
|
|
143
|
+
*/
|
|
113
144
|
private wake;
|
|
145
|
+
/** 正在等退避的话,取消等待、马上连 */
|
|
146
|
+
private reconnectNow;
|
|
114
147
|
private heartbeat;
|
|
115
148
|
private clearTimers;
|
|
116
149
|
private trySend;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 浏览器端连接器(docs/platform-backend.md 4.5):
|
|
3
3
|
* - 断线后按指数退避加随机抖动重连;房间每次都回全量快照(welcome),客户端整桌重画,不做增量修补;
|
|
4
|
-
* - 页面从后台切回来(visibilitychange、pageshow)时立刻检查连接:iOS Safari、微信切后台会挂起连接;
|
|
4
|
+
* - 页面从后台切回来(document 的 visibilitychange、window 的 pageshow)、网络恢复(window 的 online)时立刻检查连接:iOS Safari、微信切后台会挂起连接;
|
|
5
|
+
* 从往返缓存(bfcache,pageshow 带 persisted)回来的页面,旧连接一律作废、马上重连(0.11.1);
|
|
6
|
+
* - 静默死掉的连接(0.11.1):iOS 锁屏、切 App 以后 socket 常常还是 OPEN、也不触发 close,发出去的石沉大海。
|
|
7
|
+
* 每次心跳(和切回前台)发 "ping" 以后等 PONG_WAIT_MS,这期间什么都没收到(连房间自动回的 "pong" 都没有)就判它死了:
|
|
8
|
+
* 不等 close,直接扔掉、按断线重连。建连卡在 CONNECTING 超过 CONNECT_MS 也一样。只看"收到过没有",不比时钟,后台节流的计时器晚跑也不会误判;
|
|
5
9
|
* - 收到 1008、1009 或 4000 段关闭码时不重连(违规、房间关了、被别处顶掉、版本太旧、没登录 4401、别的网站 4403);
|
|
6
10
|
* - 平台暂时不可用(1013)照常按退避重连;
|
|
7
11
|
* - 连着 maxFailures 次(默认 20 次,约 4 分钟)都没进得了房间(没收到 welcome)就停下,状态变成 failed,由界面提示"连不上"、让用户点 retry()。
|
|
8
12
|
* 退避和失败次数都在收到 welcome 时才清零,不在 onopen:被拒的连接也会先 open 再关,按 onopen 清零就会一直快速重连;
|
|
9
13
|
* - 下行消息按 seq 去重,旧的丢掉;上行操作带 moveId 和 baseSeq(做决定时看到的 seq),没收到 ack 的在重连后原样重发:
|
|
10
14
|
* 房间认得出重复的 moveId;牌局在那之后变过的,房间回 stale,不会把旧操作套到新的一手上;
|
|
11
|
-
* - 心跳发纯文本 "ping",房间由运行时自动回 "pong"
|
|
15
|
+
* - 心跳发纯文本 "ping",房间由运行时自动回 "pong"(setWebSocketAutoResponse),不唤醒房间。
|
|
12
16
|
*
|
|
13
17
|
* 浏览器里的计时器(重连、心跳)可以用 setTimeout,"只用一个闹钟"是房间(Durable Object)那边的规矩。
|
|
14
18
|
*/
|
|
@@ -17,6 +21,10 @@ const OPEN = 1;
|
|
|
17
21
|
const BASE_MS = 500;
|
|
18
22
|
const MAX_MS = 15_000;
|
|
19
23
|
const HEARTBEAT_MS = 25_000;
|
|
24
|
+
/** 发了 ping 以后等多久没收到任何东西就判连接死了(0.11.1)。房间的自动回 pong 不经过游戏代码,正常几十毫秒就到 */
|
|
25
|
+
export const PONG_WAIT_MS = 8_000;
|
|
26
|
+
/** 建连最多等多久(0.11.1):卡在 CONNECTING 的按一次失败算,重连 */
|
|
27
|
+
export const CONNECT_MS = 10_000;
|
|
20
28
|
/** 快捷短语太快时最多排几个(多的丢最早的) */
|
|
21
29
|
const EMOTE_QUEUE = 2;
|
|
22
30
|
/** 第 n 次重连(从 0 起)的等待:指数退避,上限 15 秒,乘一个 [0.5, 1) 的随机系数(抖动,免得一桌人同时重连)。 */
|
|
@@ -35,6 +43,10 @@ export class RoomClient {
|
|
|
35
43
|
lastSeq = -1;
|
|
36
44
|
retryTimer = null;
|
|
37
45
|
beatTimer = null;
|
|
46
|
+
/** 探活(0.11.1):发了 ping 还没收到任何东西;到点还是 true 就判死 */
|
|
47
|
+
probing = false;
|
|
48
|
+
probeTimer = null;
|
|
49
|
+
connectTimer = null;
|
|
38
50
|
/** 没收到 ack 的操作:重连后按原 moveId 重发 */
|
|
39
51
|
pending = new Map();
|
|
40
52
|
moveCounter = 0;
|
|
@@ -46,7 +58,12 @@ export class RoomClient {
|
|
|
46
58
|
emoteQueue = [];
|
|
47
59
|
emoteTimer = null;
|
|
48
60
|
opts;
|
|
49
|
-
onWake = () => this.wake();
|
|
61
|
+
onWake = () => this.wake(false);
|
|
62
|
+
/** pageshow 带 persisted:页面是从往返缓存里拿回来的,旧连接不能信 */
|
|
63
|
+
onPageShow = (ev) => this.wake(ev?.persisted === true);
|
|
64
|
+
onOnline = () => this.wake(false);
|
|
65
|
+
doc;
|
|
66
|
+
win;
|
|
50
67
|
constructor(opts) {
|
|
51
68
|
this.opts = {
|
|
52
69
|
random: Math.random,
|
|
@@ -54,9 +71,12 @@ export class RoomClient {
|
|
|
54
71
|
clearTimer: (t) => clearTimeout(t),
|
|
55
72
|
...opts,
|
|
56
73
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
74
|
+
this.doc = opts.events ?? (typeof document !== 'undefined' ? document : undefined);
|
|
75
|
+
// pageshow、online 只在 window 上派发,挂在 document 上永远收不到(0.11.0 以前就是这样)
|
|
76
|
+
this.win = opts.windowEvents ?? opts.events ?? (typeof window !== 'undefined' ? window : undefined);
|
|
77
|
+
this.doc?.addEventListener('visibilitychange', this.onWake);
|
|
78
|
+
this.win?.addEventListener('pageshow', this.onPageShow);
|
|
79
|
+
this.win?.addEventListener('online', this.onOnline);
|
|
60
80
|
this.connect();
|
|
61
81
|
}
|
|
62
82
|
/** 发一个操作意图;返回 moveId。没连上时先存着,连上后发。 */
|
|
@@ -113,9 +133,9 @@ export class RoomClient {
|
|
|
113
133
|
close() {
|
|
114
134
|
this.setStatus('closed');
|
|
115
135
|
this.clearTimers();
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
136
|
+
this.doc?.removeEventListener('visibilitychange', this.onWake);
|
|
137
|
+
this.win?.removeEventListener('pageshow', this.onPageShow);
|
|
138
|
+
this.win?.removeEventListener('online', this.onOnline);
|
|
119
139
|
this.ws?.close(1000, 'bye');
|
|
120
140
|
this.ws = null;
|
|
121
141
|
}
|
|
@@ -139,9 +159,17 @@ export class RoomClient {
|
|
|
139
159
|
url.searchParams.set('cv', String(this.opts.clientVersion ?? 0));
|
|
140
160
|
const ws = new Impl(url.toString());
|
|
141
161
|
this.ws = ws;
|
|
162
|
+
this.connectTimer = this.opts.setTimer(() => {
|
|
163
|
+
this.connectTimer = null;
|
|
164
|
+
if (this.ws === ws && ws.readyState !== OPEN)
|
|
165
|
+
this.abandon(ws);
|
|
166
|
+
}, CONNECT_MS);
|
|
142
167
|
ws.onopen = () => {
|
|
143
168
|
if (this.ws !== ws)
|
|
144
169
|
return;
|
|
170
|
+
if (this.connectTimer !== null)
|
|
171
|
+
this.opts.clearTimer(this.connectTimer);
|
|
172
|
+
this.connectTimer = null;
|
|
145
173
|
this.welcomed = false;
|
|
146
174
|
this.setStatus('open');
|
|
147
175
|
this.heartbeat();
|
|
@@ -150,7 +178,11 @@ export class RoomClient {
|
|
|
150
178
|
this.trySend(msg);
|
|
151
179
|
};
|
|
152
180
|
ws.onmessage = (ev) => {
|
|
153
|
-
if (this.ws !== ws
|
|
181
|
+
if (this.ws !== ws)
|
|
182
|
+
return;
|
|
183
|
+
// 收到任何东西都说明连接活着
|
|
184
|
+
this.probing = false;
|
|
185
|
+
if (typeof ev.data !== 'string' || ev.data === PONG)
|
|
154
186
|
return;
|
|
155
187
|
let msg;
|
|
156
188
|
try {
|
|
@@ -192,26 +224,56 @@ export class RoomClient {
|
|
|
192
224
|
ws.onclose = (ev) => {
|
|
193
225
|
if (this.ws !== ws)
|
|
194
226
|
return;
|
|
195
|
-
|
|
196
|
-
this.ws = null;
|
|
197
|
-
this.clearTimers();
|
|
198
|
-
if (this.status === 'closed')
|
|
199
|
-
return;
|
|
200
|
-
if (isFinalClose(ev.code)) {
|
|
201
|
-
this.setStatus('closed', ev.code, ev.reason);
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
// 升级被拒(4xx/5xx)时浏览器只给 1006,分不出原因;1013 是平台暂时不可用:一直进不了房间就停下,别无限重连
|
|
205
|
-
if (!entered && ++this.failures >= (this.opts.maxFailures ?? 20)) {
|
|
206
|
-
this.setStatus('failed', ev.code);
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
this.scheduleRetry(ev.code);
|
|
227
|
+
this.lost(ev.code, ev.reason);
|
|
210
228
|
};
|
|
211
229
|
ws.onerror = () => {
|
|
212
230
|
// 之后一定会有 onclose,在那里处理
|
|
213
231
|
};
|
|
214
232
|
}
|
|
233
|
+
/** 这条连接断了(或者被判死了):最终关闭码停下,没进过房间的累计失败次数,其余按退避重连 */
|
|
234
|
+
lost(code, reason) {
|
|
235
|
+
const entered = this.status === 'open' && this.welcomed;
|
|
236
|
+
this.ws = null;
|
|
237
|
+
this.clearTimers();
|
|
238
|
+
if (this.status === 'closed')
|
|
239
|
+
return;
|
|
240
|
+
if (isFinalClose(code)) {
|
|
241
|
+
this.setStatus('closed', code, reason);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// 升级被拒(4xx/5xx)时浏览器只给 1006,分不出原因;1013 是平台暂时不可用:一直进不了房间就停下,别无限重连
|
|
245
|
+
if (!entered && ++this.failures >= (this.opts.maxFailures ?? 20)) {
|
|
246
|
+
this.setStatus('failed', code);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
this.scheduleRetry(code);
|
|
250
|
+
}
|
|
251
|
+
/** 不等 close 了:摘掉回调、关掉,按 1006(网络断了)走重连。死连接的 close 可能几分钟后才来,也可能不来 */
|
|
252
|
+
abandon(ws) {
|
|
253
|
+
if (this.ws !== ws)
|
|
254
|
+
return;
|
|
255
|
+
ws.onopen = ws.onmessage = ws.onclose = ws.onerror = null;
|
|
256
|
+
try {
|
|
257
|
+
ws.close();
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
// 已经坏了
|
|
261
|
+
}
|
|
262
|
+
this.lost(1006);
|
|
263
|
+
}
|
|
264
|
+
/** 发一个 ping,PONG_WAIT_MS 内什么都没收到就判死(已经在探就不重复发) */
|
|
265
|
+
probe() {
|
|
266
|
+
const ws = this.ws;
|
|
267
|
+
if (!ws || ws.readyState !== OPEN || this.probeTimer !== null)
|
|
268
|
+
return;
|
|
269
|
+
this.probing = true;
|
|
270
|
+
this.trySend(PING);
|
|
271
|
+
this.probeTimer = this.opts.setTimer(() => {
|
|
272
|
+
this.probeTimer = null;
|
|
273
|
+
if (this.ws === ws && this.probing)
|
|
274
|
+
this.abandon(ws);
|
|
275
|
+
}, PONG_WAIT_MS);
|
|
276
|
+
}
|
|
215
277
|
/** 带上这次的关闭码:游戏据此区分"网络断了"(1006)和"平台有点忙"(1013)。 */
|
|
216
278
|
scheduleRetry(code) {
|
|
217
279
|
this.setStatus('reconnecting', code);
|
|
@@ -221,36 +283,50 @@ export class RoomClient {
|
|
|
221
283
|
this.connect();
|
|
222
284
|
}, wait);
|
|
223
285
|
}
|
|
224
|
-
/**
|
|
225
|
-
|
|
286
|
+
/**
|
|
287
|
+
* 切回前台、网络恢复:
|
|
288
|
+
* - 连着:探一下活(静默死掉的会在 PONG_WAIT_MS 后判死、重连);
|
|
289
|
+
* - 在等退避:别等了,马上连;
|
|
290
|
+
* - 有连接却不是 OPEN、也不在建连(CLOSING、CLOSED 却一直没等到 close,从往返缓存回来常见):扔掉,马上连;
|
|
291
|
+
* - fresh(pageshow 带 persisted):不管什么状态,旧连接一律扔掉重连。
|
|
292
|
+
*/
|
|
293
|
+
wake(fresh) {
|
|
226
294
|
if (this.status === 'closed' || this.status === 'failed' || this.opts.isHidden?.() || (typeof document !== 'undefined' && document.hidden))
|
|
227
295
|
return;
|
|
228
|
-
|
|
229
|
-
|
|
296
|
+
const ws = this.ws;
|
|
297
|
+
if (ws && (fresh || (ws.readyState !== OPEN && ws.readyState !== 0))) {
|
|
298
|
+
// 扔掉以后按断线走一遍(状态、失败次数照常算),再立刻连,不等退避
|
|
299
|
+
this.abandon(ws);
|
|
300
|
+
this.reconnectNow();
|
|
230
301
|
return;
|
|
231
302
|
}
|
|
232
|
-
if (
|
|
233
|
-
this.
|
|
234
|
-
|
|
235
|
-
this.connect();
|
|
303
|
+
if (ws && ws.readyState === OPEN) {
|
|
304
|
+
this.probe();
|
|
305
|
+
return;
|
|
236
306
|
}
|
|
307
|
+
if (!ws)
|
|
308
|
+
this.reconnectNow();
|
|
309
|
+
}
|
|
310
|
+
/** 正在等退避的话,取消等待、马上连 */
|
|
311
|
+
reconnectNow() {
|
|
312
|
+
if (this.retryTimer === null)
|
|
313
|
+
return;
|
|
314
|
+
this.opts.clearTimer(this.retryTimer);
|
|
315
|
+
this.retryTimer = null;
|
|
316
|
+
this.connect();
|
|
237
317
|
}
|
|
238
318
|
heartbeat() {
|
|
239
319
|
this.beatTimer = this.opts.setTimer(() => {
|
|
240
|
-
this.
|
|
320
|
+
this.probe();
|
|
241
321
|
this.heartbeat();
|
|
242
322
|
}, HEARTBEAT_MS);
|
|
243
323
|
}
|
|
244
324
|
clearTimers() {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this.
|
|
250
|
-
if (this.beatTimer !== null)
|
|
251
|
-
this.opts.clearTimer(this.beatTimer);
|
|
252
|
-
this.retryTimer = null;
|
|
253
|
-
this.beatTimer = null;
|
|
325
|
+
for (const t of [this.retryTimer, this.emoteTimer, this.beatTimer, this.probeTimer, this.connectTimer])
|
|
326
|
+
if (t !== null)
|
|
327
|
+
this.opts.clearTimer(t);
|
|
328
|
+
this.retryTimer = this.emoteTimer = this.beatTimer = this.probeTimer = this.connectTimer = null;
|
|
329
|
+
this.probing = false;
|
|
254
330
|
}
|
|
255
331
|
trySend(msg) {
|
|
256
332
|
if (!this.ws || this.ws.readyState !== OPEN)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/fun-logic.d.ts
CHANGED
|
@@ -145,7 +145,10 @@ export interface Box {
|
|
|
145
145
|
* 菜单(w×h)贴着头像(anchor)放:先试朝屏幕中心那一侧,再试另外三侧;夹在可见区里(留 margin),
|
|
146
146
|
* 和"禁区"(手牌、操作按钮)以及头像本身压得最少的那个位置胜出,一样少时按试的顺序。
|
|
147
147
|
*/
|
|
148
|
-
|
|
148
|
+
/** 菜单、面板在这么宽的屏幕上实际多宽:最多 w,两边各留 margin(0.11.2;390 竖屏上 440 宽的面板会伸出屏幕) */
|
|
149
|
+
export declare function fitMenuWidth(w: number, viewWidth: number, margin?: number): number;
|
|
150
|
+
/** w 是想要的宽度,窄屏上按 fitMenuWidth 收窄后再摆(页面上的盒子也要按同样的宽度画,table-fun 用 CSS 的 min()) */
|
|
151
|
+
export declare function placeMenu(anchor: Box, want: number, h: number, view: {
|
|
149
152
|
width: number;
|
|
150
153
|
height: number;
|
|
151
154
|
}, avoid?: readonly Box[], margin?: number, gap?: number): {
|
package/dist/fun-logic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fun-logic.d.ts","sourceRoot":"","sources":["../src/fun-logic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fun-logic.d.ts","sourceRoot":"","sources":["../src/fun-logic.ts"],"names":[],"mappings":"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"}
|
package/dist/fun-logic.js
CHANGED
|
@@ -176,7 +176,13 @@ const overlap = (a, b) => Math.max(0, Math.min(a.left + a.width, b.left + b.widt
|
|
|
176
176
|
* 菜单(w×h)贴着头像(anchor)放:先试朝屏幕中心那一侧,再试另外三侧;夹在可见区里(留 margin),
|
|
177
177
|
* 和"禁区"(手牌、操作按钮)以及头像本身压得最少的那个位置胜出,一样少时按试的顺序。
|
|
178
178
|
*/
|
|
179
|
-
|
|
179
|
+
/** 菜单、面板在这么宽的屏幕上实际多宽:最多 w,两边各留 margin(0.11.2;390 竖屏上 440 宽的面板会伸出屏幕) */
|
|
180
|
+
export function fitMenuWidth(w, viewWidth, margin = 8) {
|
|
181
|
+
return Math.max(0, Math.min(w, viewWidth - 2 * margin));
|
|
182
|
+
}
|
|
183
|
+
/** w 是想要的宽度,窄屏上按 fitMenuWidth 收窄后再摆(页面上的盒子也要按同样的宽度画,table-fun 用 CSS 的 min()) */
|
|
184
|
+
export function placeMenu(anchor, want, h, view, avoid = [], margin = 8, gap = 10) {
|
|
185
|
+
const w = fitMenuWidth(want, view.width, margin);
|
|
180
186
|
const cx = anchor.left + anchor.width / 2;
|
|
181
187
|
const cy = anchor.top + anchor.height / 2;
|
|
182
188
|
const right = { left: anchor.left + anchor.width + gap, top: cy - h / 2 };
|