Skip to content

feat(mp-base): support offline mode - #153

Open
Charbo23 wants to merge 1 commit into
HuolalaTech:mainfrom
Charbo23:feat/mp-offline-mode
Open

Charbo23 wants to merge 1 commit into
HuolalaTech:mainfrom
Charbo23:feat/mp-offline-mode

Conversation

@Charbo23

Copy link
Copy Markdown

Closes HuolalaTech/page-spy-web#415

背景

浏览器 SDK 支持 offline: true:开启后不建调试房间、不连 WebSocket,只在本地采集,配合 DataHarbor 上传日志做回放。小程序 SDK 目前不支持(文档中 config.offline 也只标注了浏览器平台),初始化即创建房间并连接 WebSocket。给真实用户开启离线录制时,每个用户都会在服务端挂一个实时调试房间,详见上面关联的 issue。

改动(packages/page-spy-mp-base/src/index.ts)

与浏览器 SDK 保持一致:

  • updateConfiguration():socketStore.connectable = !offline,并设置 socketStore.isOffline = offline(离线时不再为调试端缓存消息)。
  • init():仅在 config.offline === false 时建立或复用连接,并注册 onAppShow 重连。

数据采集走 public-data 事件,小程序 DataHarbor 监听的正是这个事件,与 socket 无关,所以离线模式下采集与 upload() 不受影响。offline 默认值仍为 false,未设置的现有用户行为不变。

测试

packages/page-spy-mp-base/tests/init.test.ts 新增 Offline mode 一组 5 条:

  • 离线时不调用 createNewConnection / useOldConnection,也不写房间缓存;
  • 有房间缓存时离线同样不复用;
  • 离线时不注册 onAppShow 重连;
  • 离线时 socketStore.connectable === false、isOffline === true;
  • 默认(在线)行为不变:建连一次、注册一次 onAppShow、connectable === true。

本地 yarn lerna run build 后运行 npx jest:32 个套件、182 条全部通过;改动文件 eslint、prettier 通过。

我们在自己的微信小程序里用等价做法(初始化前置空两个建连方法)实测过:服务端不再建房间、没有 WebSocket 连接,采集正常,upload() 照常上传。

文档

合并后,page-spy-web 文档中 config.offline 的平台标注需要补上小程序。需要的话我们可以另提一个 PR。

🤖 Generated with Claude Code

When `offline: true`, the mini-program SDK no longer creates a debug room,
reuses the cached room, or registers the onAppShow reconnect, and the socket
store is marked as offline (`connectable = false`, `isOffline = true`),
mirroring the browser SDK. Data collection and DataHarbor upload are
unaffected since they rely on `public-data` events, not the socket.

Ref: HuolalaTech/page-spy-web#415

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

[mp-base] 希望小程序 SDK 支持 offline: true:离线录制时不建调试房间、不连 WebSocket

1 participant