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.

NOTA

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.

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now