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

# SDK 配置

> 掌握 Flashduty RUM 的会话重放功能，通过重现用户操作路径快速定位问题并优化用户体验。

Flashduty RUM 的会话重放功能集成于 RUM SDK 中，通过简单配置采样比例和隐私规则，即可快速启用重放功能。

## 开启采集

<Tabs>
  <Tab title="自动采集">
    重放 SDK 已集成至 RUM SDK，配置采样比例便可开启重放功能：

    ```javascript theme={null}
    window.FC_RUM.init({
      applicationId: "YOUR_APPLICATION_ID",
      clientToken: "YOUR_CLIENT_TOKEN",
      // ...
      sessionReplaySampleRate: 10, // 默认会话重放的 session 采样率 10%
      // ...
    });
    ```

    <Note>
      **采样方式**：在客户端 SDK 初始化 session 时生成 0-1 之间的随机数，与 `rate/100` 进行大小比较。如落在区间内，则该 session 会作为采集样本，回放数据会在 session 周期内采集与上报。

      在 session 被采样的基础上，会话重放的采样率（sessionReplaySampleRate）会被进行二次计算和采样。
    </Note>
  </Tab>

  <Tab title="手动采集">
    默认配置采样率后，会在 `RUM.init()` 执行后开启自动采集。若想手动控制采集时机（如用户登录后再进行数据采集），可先开启手动采集开关，再手动调用 record 方法：

    ```javascript theme={null}
    window.FC_RUM.init({
      applicationId: "YOUR_APPLICATION_ID",
      clientToken: "YOUR_CLIENT_TOKEN",
      // ...
      sessionReplaySampleRate: 10, // 采样率 10%
      startSessionReplayRecordingManually: true, // 开启手动采集开关
      // ...
    });

    if (userIsShouldRecord()) {
      // 如果满足某些条件，可开启回放
      window.FC_RUM.startSessionReplayRecording(); // 在调用时再开启数据采集
    }
    ```

    <Tip>
      开启采集后，可通过 `stopSessionReplayRecording()` 方法停止采集。
    </Tip>
  </Tab>

  <Tab title="强制开启">
    在某些场景下，即使采样率并未命中，也希望采集该 session 相关数据（如重点监测刚上线的功能，或者捕获某个异常后希望上报后续操作），此时可以通过调用 `startSessionReplayRecording({ force: true })` 方法来强制开启重放。

    <Warning>
      只有当本次 session 被采样，而 sessionReplay 未被采样的情况下，强制开启才会生效。如果 session 本身并没有被采样，即使强制开启 replay 也无效。
    </Warning>
  </Tab>
</Tabs>

## 关闭采集

如果需要关闭采集功能，将对应的 replay 采样率调整至 0 或者直接去掉该配置项即可：

```javascript theme={null}
window.FC_RUM.init({
  applicationId: "YOUR_APPLICATION_ID",
  clientToken: "YOUR_CLIENT_TOKEN",
  // ...
  sessionReplaySampleRate: 0, // 关闭重放功能
  // ...
});
```

## 工作原理

会话重放 SDK 基于 [rrweb](https://www.rrweb.io/) 实现。

<Steps>
  <Step title="录制阶段">
    录制 SDK 会将当前 DOM 和 CSS 样式打快照，并在用户行为（DOM 变化、鼠标移动、点击、表单输入等）发生时收集对应的事件。通过序列化、压缩、去除敏感信息后进行数据上报。
  </Step>

  <Step title="重放阶段">
    播放 SDK 会根据快照进行 DOM 重建，并在合适的时机将事件行为转换为 DOM 变化并进行展示。
  </Step>
</Steps>

<Info>
  * 在数据上报前，SDK 会提前进行数据压缩，并将该 CPU 密集操作放在 Web Worker 中执行，不会影响主线程渲染
  * SDK 兼容性和 RUM SDK 一致，支持 IE11 以上浏览器
</Info>

## 下一步

<CardGroup cols={2}>
  <Card title="查看会话回放" icon="play" href="./session-viewing">
    学习如何查看重放记录
  </Card>

  <Card title="隐私保护" icon="shield" href="./privacy-protection">
    了解隐私保护设置
  </Card>
</CardGroup>
