> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RUM 会话回放

> 记录经过隐私处理的 rrweb DOM 快照，并在 MoleSignal 中回放真实浏览器会话。

会话回放会先记录完整 DOM 快照，再按时间记录增量变化。MoleSignal 会在沙箱化、不可交互的播放器中重建这些事件。

回放默认关闭。

## 启用采样回放

```ts theme={null}
const rum = initRum({
  applicationId: 'checkout-web',
  clientToken: 'msrum_your_client_token',
  site: 'https://molesignal.example.com',
  sessionSampleRate: 100,
  sessionReplaySampleRate: 20,
  sessionReplay: {
    blockSelector: '[data-molesignal-block]',
    maskTextSelector: '[data-molesignal-mask]',
    ignoreSelector: '[data-molesignal-ignore]',
  },
});
```

`sessionReplaySampleRate` 只对 `sessionSampleRate` 已采样的会话生效。实际采样率计算方式请参阅
[RUM 数据采样](/zh-Hans/rum/sampling)。

## 手动开始或停止记录

```ts theme={null}
rum.startSessionReplayRecording();

// 在绝不能记录的敏感流程开始前停止。
rum.stopSessionReplayRecording();
```

手动开始只作用于已被 `sessionSampleRate` 选中的会话。开始记录时会创建新的完整 DOM 快照，确保可以重建回放。

## 记录的事件

Recorder 会采集：

* 完整 DOM 快照和增量 DOM Mutation；
* 指针移动和点击；
* 滚动和 Viewport 变化；
* Input 交互，值会被遮罩；
* 样式表状态和可访问的内联样式；
* rrweb 支持的媒体状态。

默认每 5 分钟记录一次周期性完整快照。可以通过 `checkoutInterval` 配置 30 秒到 30 分钟的值：

```ts theme={null}
sessionReplay: {
  checkoutInterval: 5 * 60_000,
},
```

## 隐私控制

所有 Input 值都会被遮罩。使用默认的 `defaultPrivacyLevel: 'mask'` 时，全部页面文本也会被遮罩。
生产环境启用回放前，请定义屏蔽、遮罩和忽略选择器。

```html theme={null}
<div data-molesignal-block>Payment details</div>
<span data-molesignal-mask>Customer name</span>
<canvas data-molesignal-ignore></canvas>
```

选择器语义和生产检查清单请参阅 [RUM 隐私保护](/zh-Hans/rum/privacy)。

## 可选的高数据量采集

以下选项可能显著增加 Payload 和存储量，因此默认关闭：

```ts theme={null}
sessionReplay: {
  collectFonts: false,
  inlineImages: false,
  recordCrossOriginIframes: false,
},
```

跨域 Frame 记录还需要被嵌入应用配合。MoleSignal 播放器不会回放 Canvas 像素；对于以 Canvas 为主的内容，
请优先使用 DOM 表示或占位符。

## 传输与保留

回放使用独立队列，默认每 10 秒刷新一次，每批 100 个事件。使用 `replayFlushInterval` 和
`replayBatchSize` 调整客户端行为。MoleSignal 会压缩回放 Segment 并存入对象存储，再按照部署的
`compactor.retention_days` 策略过期清理。

## 验证回放

<Steps>
  <Step title="记录一个无敏感数据的测试流程">
    访问多个页面、点击控件、滚动页面，并触发一次 DOM 更新。
  </Step>

  <Step title="打开会话">
    进入 **RUM → 会话回放**，打开刚记录的会话。
  </Step>

  <Step title="检查重建和遮罩">
    检查页面结构、事件时间、进度控制、屏蔽区域和遮罩后的值。
  </Step>

  <Step title="检查可用性筛选">
    只有 MoleSignal 收到有效的完整 DOM 快照后，会话才会显示为可回放。
  </Step>
</Steps>

<CardGroup cols={2}>
  <Card title="数据采样" icon="sliders" href="/zh-Hans/rum/sampling">
    估算回放覆盖率和数据量。
  </Card>

  <Card title="隐私" icon="shield" href="/zh-Hans/rum/privacy">
    发布前定义记录边界。
  </Card>
</CardGroup>
