Show Menu
TOPICS×

Poner eventos en cola cuando la respuesta de las sesiones es lenta

La API de Media Collection es RESTful: es decir, el usuario realiza una solicitud HTTP y espera la respuesta. Esto solo es importante para cuando se realiza una Solicitud de sesiones para obtener un ID de sesión al principio de la reproducción de vídeo. Esto es importante porque el ID de sesión es necesario para todas las llamadas de seguimiento subsiguientes.
El reproductor puede desencadenar eventos
antes de recibir la respuesta de sesión
(con el parámetro ID de sesión) del backend. En este caso, la aplicación debe poner en cola los eventos de seguimiento que lleguen entre la Solicitud de sesiones y su respuesta. Cuando llega la respuesta de sesiones, primero debe procesar los eventos en cola y, a continuación, iniciar el procesamiento de eventos
en directo
con las llamadas de eventos .
La solicitud de eventos no devuelve datos al cliente aparte de un código de respuesta HTTP.
Consulte el reproductor de referencia de su distribución para procesar eventos antes de recibir un ID de sesión. Por ejemplo:
var eventData = {}; // JSON payload eventData.playerTime = getPlayerTime(); // Required eventData.eventType = "play"; // Required eventData.params = {}; // Optional for events VideoPlayer.prototype._collectEvent = function(eventData) { // If we don't have a Session ID yet, // queue the event and return... if (!sessionStarted) { console.log("[Player] Queueing event "); _pendingEvents.push(eventData); return; } // If we DO have a Session ID, process the // tracking event... apiClient.request({ "baseUrl": "{endpoint}", "path": "api/v1/{sid}/events", // events request "method": "POST", "data": eventData }).then((response) => { […] } } VideoPlayer.prototype.collectEvent = function (eventType, eventParams) { if (typeof eventParams === 'undefined') { eventParams = {}; } this._collectEvent({ eventType: eventType, // Required playerTime: getPlayerTime(), // Required params: eventParams // Optional }); }; VideoPlayer.prototype.getPlayerTime = function() { return { playhead: this.getPlayhead(), // playhead value in seconds ts: this.getCurrentTimestamp() // timestamp value in milliseconds }; };
Procesa cualquier evento en cola:
el reproductor de referencia procesa los eventos en cola de la siguiente manera:
[…] this._processPendingEvents(); // Once you have a Session ID, […] // process any queued events VideoPlayer.prototype._processPendingEvents = function() { this._pendingEvents.forEach((eventData) => { this._collectEvent(eventData); }); this._pendingEvents = []; }
Continúe procesando los eventos de seguimiento a medida que ocurren.