Skip to content

feat: 实时推送改收 gzip 压缩帧 - #25

Merged
stqfdyr merged 2 commits into
mainfrom
feat/stream-gzip
Oct 6, 2026
Merged

stqfdyr merged 2 commits into
mainfrom
feat/stream-gzip

Conversation

@stqfdyr

@stqfdyr stqfdyr commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

stqfdyr added a commit to monitor-probe/monitor that referenced this pull request Oct 6, 2026
- `/api/ws` 加可选参数 `gzip`:带上时公开帧 gzip 后以二进制消息发出,解开与文本帧是同一份 JSON;不带时照旧发文本帧,现有主题不受影响。压缩结果随共享快照缓存,每帧只压一次,与打开的页面数无关。
- 管理帧(登录后的面板,或站长登录着打开的公开页)不论是否带参数一律发文本:它带着每个节点的 token 和地址,又和 agent 上报的字符串同在一帧,每 2 秒一份的压缩长度可被用来逐字猜出这些值。面板因此不请求压缩。
- 实测:模拟 100 台全在线的公开帧 110 KB → 15 KB,压缩一帧 1.2 ms(release)。
- 两个官方主题(monitor-probe/monitor-theme-default#26、monitor-probe/monitor-theme-serverstatus#25)、主题站假 hub(monitor-probe/themes#2)与文档(monitor-probe/monitor-document#45)同步。
stqfdyr added a commit to monitor-probe/monitor-theme-default that referenced this pull request Oct 6, 2026
- 实时推送连 `/api/ws?gzip`,收到二进制帧时用 `DecompressionStream` 解压后按到达顺序处理,连接关闭后才解完的帧丢弃;浏览器不支持时不带参数。旧版 hub 忽略参数、站长登录时 hub 推的管理帧,都是文本帧,同样能收。
- 只有解开的帧才重置断流计时:一直收到解不开的帧时按断流重连,不再停在旧数据上;解不开的原因记到控制台。
- 一直开着的页面,100 台在线节点时 hub 的出网从每帧约 110 KB 降到约 15 KB。
- 依赖 monitor-probe/monitor#101,与serverstatus 的同名改动(monitor-probe/monitor-theme-serverstatus#25)一致。
@stqfdyr
stqfdyr merged commit 092b74a into main Oct 6, 2026
1 check passed
@stqfdyr
stqfdyr deleted the feat/stream-gzip branch October 6, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant