@rrweb/browser-client
概述
用于将 rrweb 会话录制到兼容 rrweb Cloud 的 API 的浏览器客户端。它封装了 rrweb 录制,通过 WebSocket 流式传输事件,并为缓冲的事件提供 HTTP POST 回退。
本 README 介绍 npm/ESM 包。关于托管脚本代码片段以及更完整的 rrweb Cloud 设置,请参阅 JavaScript SDK 指南。
安装
npm install @rrweb/browser-client快速开始
import rrwebBrowserClient, {
start,
stop,
addMeta,
getRecordingId,
} from '@rrweb/browser-client';
start({
publicApiKey: 'public_key_rr_...',
includePii: false,
meta: {
userId: 'user-123',
environment: 'production',
},
});
addMeta({ plan: 'pro' });
console.log('recording id', getRecordingId());
stop(false);默认导出暴露了相同的方法:
rrwebBrowserClient.start({
publicApiKey: 'public_key_rr_...',
});选项
serverUrl:可选的事件端点。默认为https://api.rrweb.com/recordings/{recordingId}/events/ws。自定义 URL 中需包含{recordingId},否则客户端会将其作为查询参数添加。http和httpsURL 会被转换为ws和wss用于 WebSocket 连接,而 HTTP 回退会向去掉结尾/ws的同一端点发起 POST。当通过你自己的域名路由事件时,请参阅录制端点代理。publicApiKey:随 WebSocket 和 HTTP 回退请求一同发送的公开只写 API 密钥。rrweb Cloud 的公开密钥采用public_key_rr_...格式。请参阅 API 密钥。includePii:默认false。启用后,客户端会包含额外的访客元数据,例如语言、时区、屏幕尺寸、标题和 referrer 信息。请参阅可选访客元数据。meta:在录制事件之前发送的自定义录制元数据。内置诊断信息(如recordVersion、recordCommitHash、jsSource和jsEntrypoint)会在自定义元数据之后自动添加。请参阅应用元数据。jsSource:可选的来源标识符,用于程序化加载器。URL 值在记录时会去除查询字符串和哈希。jsEntrypoint:可选的入口标签。直接调用start()时默认为programmatic,script 标签自动启动时默认为script-tag。- rrweb 录制选项:其他选项会透传给 rrweb 的
record(),例如脱敏、屏蔽、采样和 DOM 捕获选项。请参阅 rrweb 录制文档。
样式表捕获
目前使用 inlineStylesheet 实现样式表捕获兼容。待 assets 分支的 captureAssets 录制 API 落地后,captureAssets.stylesheets 将取代该兼容路径。
录制辅助方法
getRecordingId():返回当前录制 ID,如有需要会在start()之前创建。录制 ID 存储在sessionStorage中,因此不同标签页拥有独立的录制上下文。addMeta(payload):在录制开始后添加或更新录制元数据。addPageviewMeta(payload):为当前页面浏览添加元数据。addCustomEvent(tag, payload):将一个自定义 rrweb 事件加入队列。stop(resetRecordingId):停止 rrweb 录制并关闭 WebSocket。传入true可在下次start()之前清除已存储的录制 ID。
延伸阅读
本地开发/测试环境变量
运行本地集成测试时,将本包中的 .env.example 复制为 .env。
VITE_RRWEB_BROWSER_CLIENT_SERVER_URL=http://localhost:8787/recordings/{recordingId}/events/ws
VITE_RRWEB_BROWSER_CLIENT_API_BASE_URL=http://localhost:8787
VITE_TEST_API_KEY=public_key_rr_XXXX@rrweb/browser-client 发布说明
2.1.1
补丁变更
- 更新依赖 []:
- rrweb@2.1.1
- @rrweb/record@2.1.1
- @rrweb/types@2.1.1
- @rrweb/utils@2.1.1
2.1.0
补丁变更
#1885
4e501fd感谢 @kevinvandijk! - 使 autostart 和 includePii 属性在初始化时变为可选#1884
907f744感谢 @kevinvandijk! - 为使用 SSR 的项目添加导入 browser-client 的兼容性更新依赖 [
b08a06f,7f0f75f,6fe4fed]:- @rrweb/record@2.1.0
- rrweb@2.1.0
- @rrweb/types@2.1.0
- @rrweb/utils@2.1.0
2.0.1
补丁变更
- 更新依赖 [
5f52d63]:- rrweb@2.0.1
- @rrweb/utils@2.0.1
- @rrweb/record@2.0.1
- @rrweb/types@2.0.1
2.0.0
补丁变更
#1840
6db8f71感谢 @Juice10! - 新增 rrweb 浏览器客户端包,并将nowTimestamp移入@rrweb/utils,使客户端无需通过rrweb/utils导入。更新依赖 [
6db8f71,0f0a532,7103625,a2c8a1a,22bc4c3,3d1877c,af0962c,57a940a,e65465e,d872d28,36da39d,b5e30cf,db20184,40bbc25,22bc4c3,11f6567,490b3e2,dc20cd4,3e9e42f,f27e545,7261c43,03b5216,ae6908d,46f1b25,e0f862b,cbbd1e5,a6893f7,8aea5b0,267e990,68076b7,9c6edfe,a1ec9a2,8059d96,3b8daa6,bfe14c5,4014305,efdc167,88ea2d0,609b7fa,f6f07e9,1e0b273,1fe39ab,490b3e2,979d2b1,1385f7a,d7c72bf,ebcbe8b,123a81e,05478c3,bd9eb70,fc390a9,bbbfa22,e96f668,58c9104,227d43a,bc84246,d2582e9,aa79db7,82f6fec,2606a2a,980a38c,2606a2a,a225d8e,a82a3b4,5c27b76,b149cf3,a2be77b,227d43a,527d9d3,79837ac,a7c33f2,43e4f5b,3cc4323,d38893f,6f4e691,d7cf8dd,335639a,123a81e,04ee6ed,5fbb904,1e6f71b,d08624c,2606a2a,123a81e,314a8dd,5a78938,3416c3a,7c0dc9d,8e47ca1,53b83bb,9cd28b7,07ac5c9,33e01f5,02f50d2,502d15d,d0fbe23,a3de582,e08706a,8d209a6,be6bf52,aaabdbd,1e6f71b,6388fb5,c278d06,4cb4d0e,5e6c132]:- @rrweb/utils@2.0.0
- @rrweb/types@2.0.0
- rrweb@2.0.0
- @rrweb/record@2.0.0