beforeSend (数据拦截以及数据修改)¶
RUM SDK 在每条数据发送之前都会执行 beforeSend 方法,通过自定义该方法的实现可以实现以下操作:
- 修改部分数据
- 拦截发送数据
beforeSend 提供两个参数:
event 由 SDK 产生采集各种指标数据对象。context 具体相关信息参考如下:
| EVENT TYPE | CONTEXT |
|---|---|
| View | Location |
| Action | Event |
| Resource (XHR) | XMLHttpRequest, PerformanceResourceTiming |
| Resource (Fetch) | Reqeust, Response, PerformanceResourceTiming |
| Resource (Other) | PerformanceResourceTiming |
| Error | Error |
| Long Task | PerformanceLongTaskTiming |
修改部分数据¶
window.DATAFLUX_RUM &&
window.DATAFLUX_RUM.init({
...,
beforeSend: (event, context) => {
if (event.type === 'resource' && event.resource.type === 'fetch') {
// 在原数据的基础上添加请求的返回headers信息
event.context = {...event.context, responseHeaders: context.response.headers}
}
},
...
});
注意
beforeSend 只能修改 SDK 允许修改的数据字段。如果不在这些字段范围内的修改会被忽略。
SDK 允许修改的字段如下表:
| 属性 | 类型 | 描述 |
|---|---|---|
view.url |
string | 页面地址 |
view.referrer |
string | 页面来源 |
resource.url |
string | 资源地址 |
error.message |
string | 错误信息 |
error.resource.url |
string | 错误资源地址 |
context |
string | 全局自定义内容,例如:通过addAction, addError添加的内容。 |
拦截发送数据¶
可以通过 beforeSend 方法返回 true false 拦截一些不需要的数据。
true表示这条数据需要上报false表示这条数据忽略上报