REPRODUCCIÓN / PLAYER
Player web
El Player abre un paquete .p2lrn, verifica su integridad, selecciona una presentación compatible y conecta la reproducción con la plataforma que lo contiene.
Instalación
La instalación se documenta fuera de esta referencia. Elige la guía que corresponda a tu aplicación y vuelve aquí para configurar el Player.
Componente web
srcURL del paquete que debe abrirse.
nodeEntidad inicial opcional.
rendererPresentación solicitada explícitamente cuando necesitas fijar una concreta.
runtime-base-urlOverride opcional para utilizar un runtime administrado en otro origen. SCORM y H5P crean automáticamente un sandbox aislado cuando no se proporciona uno.
player.adapterConexión con Host Adapter versión 1.
await player.reload()Vuelve a abrir el paquete y actualiza la reproducción.
API pública
P2LRN.mount(target, options)Monta el Player. options puede incluir Host Adapter, Capability Broker y cache de paquetes.
P2LRN.openPackageURL(url, options)Abre un paquete remoto, usa HTTP Range cuando está disponible y puede reutilizar un cache verificado.
P2LRN.openPackageBytes(buffer, limits)Abre bytes ya disponibles en memoria.
P2LRN.renderers() · components() · dependencies()Inspeccionan los registros del runtime.
P2LRN.installServiceWorker(options)Instala el bridge de recursos estáticos cuando el host necesita URLs navegables para contenido ya verificado.
Servicios conectados
createCapabilityBroker()Negocia capacidades semánticas declaradas por el curso y autoriza cada operación con política deny-by-default.
createToolCapabilityProvider() · createMcpCapabilityProvider()Mapean operaciones semánticas a herramientas de confianza configuradas por el host; endpoints y credenciales no entran en el paquete.
createHttpCollaborationProvider()Conecta collaboration.room con un endpoint autenticado del host.
createMemoryResourceLibrary() · createCacheStorageResourceLibrary()Biblioteca verificada por SHA-256 para recursos reutilizables; puede conectarse a createResourceLibraryResolver().
Offline y analítica
createOfflineHostAdapter()Envuelve Host Adapter v1 con estado local y outbox ordenado. createOfflineSyncController() añade sincronización opt-in al volver la conexión.
createCacheStoragePackageCache()Guarda bytes completos de cursos sólo después de verificarlos. cachePackageURL() y player.loadCachedPackage() permiten reabrirlos sin red.
createActivityTracker()Mide tiempo activo/idle de forma opt-in y limitado al contexto del Player.
createLearningEventStream() · observeLearningEvents()Proyectan los eventos runtime a un modelo ordenado de learning events con sesión/intento y categorías semánticas.
Integridad y transporte
El Player valida el manifiesto, el grafo y los recursos que consume. Cuando un servidor admite HTTP Range, puede verificar primero la estructura del paquete y cargar recursos concretos bajo demanda.
Buffer completo: 256 MiB. Paquete remoto: hasta 64 GiB. Entradas: 5000. Son límites de protección del Player, no una recomendación de tamaño de curso.
Eventos
Escucha los eventos del Player cuando tu aplicación necesite reaccionar a carga, puntuación, estado, finalización o errores.
const player = document.querySelector('p2lrn-player');
for (const type of ['p2lrn:ready','p2lrn:activityready','p2lrn:answer','p2lrn:progress','p2lrn:score','p2lrn:statechange','p2lrn:complete','p2lrn:progressionchange','p2lrn:xapi','p2lrn:error']) {
player.addEventListener(type, (event) => console.log(type, event.detail));
}Consulta Eventos para el contrato de event.detail y Métricas y analítica para saber qué guardar y cómo obtener notas, respuestas, CMI SCORM, xAPI H5P y progreso del curso.
Host Adapter
Host Adapter permite cargar y guardar estado, informar de puntuación, enviar eventos y resolver recursos protegidos. Una URL entregada mediante resolveResourceUrl debe indicar verified:true para que el Player la acepte.
SCORM y H5P dentro del paquete
Cuando el .p2lrn contiene un SCORM o H5P, el Player mantiene ese contenido dentro del paquete y prepara su ejecución en memoria. Si no existe un runtime externo aislado, crea automáticamente un iframe sandbox de origen opaco.
Los archivos del SCO se transfieren al sandbox y la API SCORM se comunica con el Player mediante mensajes.
El H5P y sus dependencias se transfieren al sandbox. Si faltan librerías compartidas, el Player las resuelve desde el catálogo que acompaña a la distribución.
Es opcional para SCORM y H5P. Utiliza runtime-base-url sólo cuando la integración quiera administrar ese entorno por separado.
Contenido compatible
El Player incluye presentaciones para contenido web y texto, multimedia, cuestionarios, juegos 2D y 3D, componentes, grupos compuestos y paquetes educativos compatibles con los entornos de ejecución disponibles.
Juegos 3D
Las actividades 3D utilizan Three.js para la escena y Rapier para las físicas. Las mecánicas de ordenar, relacionar y clasificar forman parte de P2LRN. Ver juegos 3D →
Service Worker y cache verificado
El Service Worker sirve recursos pertenecientes a paquetes que el Player ya verificó. No es necesario para todos los cursos.
El cache de paquete y el estado del alumno son almacenes independientes: createCacheStoragePackageCache() conserva bytes del curso; createOfflineHostAdapter() conserva snapshots/outbox del usuario. Ninguno escribe historial de aprendizaje dentro del .p2lrn.
const cache = P2LRN.createCacheStoragePackageCache();
const saved = await P2LRN.cachePackageURL('/courses/algebra.p2lrn', {store: cache});
player.packageCache = cache;
await player.loadCachedPackage(saved.contentRoot);Probar un paquete
El visor permite abrir un curso con el Player y revisar la información de carga y los eventos generados durante la reproducción.