SDK de JavaScript - Inicializar el SDK
Instalación
Section titled InstalaciónLa siguiente línea instalará el tracker y, con él, el SDK para que aproveches todas las funciones del tracker.
npm i @openreplay/tracker
Inicialización
Section titled InicializaciónAl instanciar el tracker de OpenReplay, dispones de varias opciones de configuración para personalizar muchos aspectos de la grabación y de la experiencia de grabación.
Debes establecer la opción projectKey en el constructor. Puedes obtener este valor desde tu panel de OpenReplay en ‘Preferences > Projects’.
Aplicaciones de Página Única (SPA)
Section titled Aplicaciones de Página Única (SPA)Si tu sitio web es una Aplicación de Página Única (SPA), utiliza el siguiente código:
import OpenReplay from '@openreplay/tracker';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY
});
tracker.start(); // returns a promise with session info (sessionID, sessionHash, userUUID)
Renderizado del Lado del Servidor (SSR)
Section titled Renderizado del Lado del Servidor (SSR)De lo contrario, si tu aplicación web utiliza Renderizado del Lado del Servidor (SSR) (es decir, NextJS, NuxtJS), usa el siguiente fragmento. Asegúrate de que tracker.start() se llame una vez que la aplicación se haya iniciado (en useEffect o componentDidMount).
import OpenReplay from '@openreplay/tracker/cjs';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
});
//...
function MyApp() {
useEffect(() => { // use componentDidMount in case of React Class Component
tracker.start(); // returns a promise with session info (sessionID, sessionHash, userUUID)
}, [])
}
Ejemplo
Section titled Ejemploimport OpenReplay from '@openreplay/tracker/cjs';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
capturePerformance: true,
__DISABLE_SECURE_MODE: true // for local testing
});
Opciones de Inicialización
Section titled Opciones de InicializaciónHay un conjunto de opciones que puedes pasar al constructor. Solo projectKey es obligatorio.
Uso General
Section titled Uso GeneralprojectKey: stringEl ID del proyecto que estás rastreando.sessionHash?: stringEl hash de la sesión inicial. Esto resulta útil cuando las sesiones atraviesan diferentes subdominios de tu aplicación web pero quieres unirlas en una única grabación. En caso de que no sea posible continuar la sesión (no existe o ha finalizado), el tracker iniciará automáticamente una nueva. También se devuelve enstop(). Más detalles sobre esto aquí.ingestPoint?: stringTu dominio de OpenReplay (es decir, https://openreplay.mydomain.com/ingest), al que el tracker enviará los eventos. Esto es opcional para los usuarios de OpenReplay Cloud. Valor predeterminado:https://api.openreplay.com/ingest(que apunta a OpenReplay Cloud).revID?: stringEl ID de revisión de tu aplicación web. Útil al buscar problemas que ocurren en una versión de lanzamiento específica.resourceBaseHref?: stringSe refiere al dominio de acceso público donde OpenReplay podría obtener los recursos (estilos, fuentes e iconos). Dado que son necesarios para una correcta reproducción de la sesión, esta opción es útil para sortear la limitación de tener tu sitio (y, por tanto, los recursos) alojado en un dominio privado. Ejemplo:https://mypublicsite.com/assets/.captureIFrames?: booleanPara capturar todos los iFrames del mismo dominio en tu aplicación web. Si deseas rastrear un iFrame específico, simplemente añade el atributo HTMLdata-openreplay-capturea la etiqueta<iframe>. Valor predeterminado:true.disableClickmaps?: booleanPara desactivar el cálculo de selectores CSS (utilizado en los mapas de clics). Valor predeterminado:false.verbose?: booleanPara habilitar los registros. Valor predeterminado:false.autoResetOnWindowOpen?: booleanHabilita esta opción para restablecer el sessionID al abrir una nueva pestaña desde tu aplicación. Esto sobrescribe el métodowindow.openpara evitar sessionIDs duplicados debido al almacenamiento de sesión compartido entre las pestañas del navegador. Valor predeterminado:false.forceSingleTab: booleanDesactiva la capacidad de grabación multipestaña que une las sesiones de usuario, realizadas en varias pestañas, en una única reproducción. En su lugar, al habilitar esta opción, las sesiones capturadas en diferentes pestañas del navegador se grabarán en grabaciones separadas. Valor predeterminado:false.disableStringDict: booleanDesactiva la lógica del diccionario de cadenas (para optimizar el almacenamiento) en las grabaciones. Valor predeterminado:false.fixedCanvasScaling: booleanFuerza a que las imágenes del canvas se rendericen con una densidad de píxeles de 1 en lugar de devicePixelRatio. (reduce la calidad potencial de una imagen para que el resultado final tenga un tamaño menor). Valor predeterminado:false.disableCanvas?: booleanDesactiva la grabación de elementos canvas. Valor predeterminado:false.assistSocketHost?: stringSe puede usar para establecer un host específico para la conexión del plugin Assist. De forma predeterminada toma el valor deingestPoint.
Privacidad
Section titled PrivacidadrespectDoNotTrack?: booleanNo inicia el tracker si la opción do-not-track está habilitada en el navegador del usuario. Valor predeterminado:false.obscureTextEmails?: booleanOculta los correos electrónicos en los elementos de texto. Los correos electrónicos se convertirán en una cadena aleatoria de asteriscos. Valor predeterminado:true.obscureTextNumbers?: booleanOculta los números en los elementos de texto. Los números se convertirán en una cadena aleatoria de asteriscos. Valor predeterminado:false.obscureInputEmails?: booleanOculta los correos electrónicos en los campos de entrada. Los valores de correo electrónico se convertirán en una cadena aleatoria de asteriscos. Valor predeterminado:true.obscureInputNumbers?: booleanOculta los números en los campos de entrada. Los valores numéricos se convertirán en una cadena aleatoria de asteriscos. Valor predeterminado:false.obscureInputDates?: booleanOculta las fechas en los campos de entrada. Los valores de fecha se convertirán en una cadena aleatoria de asteriscos. Valor predeterminado:false.defaultInputMode?: 0 | 1 | 2Modo de captura predeterminado para los valores de entrada. Respectivamente: en texto plano, oculto o ignorado. Valor predeterminado:1(oculto).
Ten en cuenta que los datos excluidos se ocultan o suprimen antes de enviar los datos a los servidores de OpenReplay. Los cambios aplicados a las opciones anteriores no pueden ser retroactivos y solo se aplicarán a los datos recién recopilados. Consulta Sanear Datos para más detalles.
Consola
Section titled ConsolaconsoleMethods?: Array<'log' | 'info' | 'warn' | 'error' 'debug' | 'assert'> | nullEspecifica la lista de métodos de consola que se capturarán. Valor predeterminado:['log', 'info', 'warn', 'error', 'debug', 'assert']consoleThrottling?: numberNúmero máximo de entradas de consola capturadas por segundo. Valor predeterminado:30.
Excepciones
Section titled ExcepcionescaptureExceptions?: booleanCaptura las excepciones de JavaScript y los stacktraces. Valor predeterminado:true.
Tiempos
Section titled TiemposcaptureResourceTimings?: booleanRegistra los tiempos de los recursos. Valor predeterminado:true.capturePageLoadTimings?: booleanRegistra los tiempos de carga de la página. Valor predeterminado:true.capturePageRenderTimings?: booleanCalcula métricas de renderizado de la página como Speed Index, Visually Complete o Time To Interactive. RequierecaptureResourceTimings = true. Valor predeterminado:true.
Rendimiento
Section titled RendimientocapturePerformance?: booleanPara capturar métricas de rendimiento como la tasa de fotogramas, el consumo de CPU y de memoria. Valor predeterminado:true.
La opción network se relaciona con la captura de las solicitudes de red y las cargas útiles para fetch y XHR.
network?: {
failuresOnly: boolean;
sessionTokenHeader: string;
ignoreHeaders: Array<string> | boolean;
capturePayload: boolean; // make sure you sanitize your data before enabling it
sanitizer: (RequestResponseData) => RequestResponseData | null;
captureInIframes: boolean;
axiosInstances: AxiosInstance[];
useProxy?: boolean;
tokenUrlMatcher?: (url: string) => boolean;
}
Consulta Opciones de Red para ver ejemplos y más detalles sobre cómo censurar datos sensibles.
Canvas
Section titled CanvasLa opción canvas se relaciona con la captura de elementos canvas/WebGL:
canvas?: {
disableCanvas?: boolean
fixedCanvasScaling?: boolean
useAnimationFrame?: boolean
fileExt?: 'webp' | 'png' | 'jpeg' | 'avif'
}
Consulta Canvas y WebGL para saber cómo habilitar esta capacidad y obtener más detalles sobre las opciones disponibles.
iFrames de dominios cruzados
Section titled iFrames de dominios cruzadosLa opción crossdomain se relaciona con la captura de iFrames de diferentes dominios. Se utiliza junto con la opción captureIFrames, que debe estar establecida en true.
crossdomain?: {
/**
* Enable cross-domain tracking
* @default false
* */
enabled?: boolean
/**
* Used to specify the parent domain, will be '*' by default
* (Check your CSP settings)
* @default '*'
* */
parentDomain?: string
}
Consulta Seguimiento de iFrames de dominios cruzados para más detalles sobre cómo capturar un iFrame de un dominio diferente.
Puntero del ratón
Section titled Puntero del ratónLa opción mouse se relaciona con la captura de selectores para los clics con el fin de construir mapas de clics.
mouse?:
{
disableClickmaps?: boolean
minSelectorDepth?: number
nthThreshold?: number
maxOptimiseTries?: number
}
disableClickmaps?: booleanDesactiva por completo el cálculo de selectores. Valor predeterminado:false.minSelectorDepth?: numberLongitud mínima de un selector optimizado (predeterminado 2). Ejemplo:body > div > div > p => body > pnthThreshold?: numberNúmero de intentos de selector antes de recurrir a los selectores nth-child. Esta es una operación costosa y puede acarrear una sobrecarga significativa, no la establezcas por encima de 2000. Valor predeterminado:1000.maxOptimiseTries?: numberNúmero de intentos para optimizar y acortar el selector. Valor predeterminado:10 000.
Reconexiones
Section titled ReconexionesconnAttemptCount?: numberNúmero máximo de reintentos cuando las solicitudes HTTP del tracker no logran llegar al backend. Valor predeterminado:10.connAttemptGap?: numberDuración entre cada intento de reintento (expresada en ms). Valor predeterminado:8000.
Feature Flags
Section titled Feature FlagsonFlagsLoadcallback que se utiliza para realizar una acción una vez que se cargan los feature flags (cada vez).
flags?: {
onFlagsLoad?: (flags: IFeatureFlag[]) => void
}
// ...
interface IFeatureFlag {
key: string
is_persist: boolean
value: string | boolean
payload: string
}
Seguridad
Section titled Seguridad__DISABLE_SECURE_MODE?: booleanPara permitir una conexión insegura entre el tracker y el backend en sitios sin SSL. Esto solo debe utilizarse con fines de desarrollo. Valor predeterminado:false.