Événements de mise en file d’attente lorsque la réponse des sessions est lente

L’API Media Collection est une API RESTful, ce qui signifie que vous faites une requête HTTP et attendez la réponse. Ceci est uniquement important lorsque vous effectuez une requête sessions pour obtenir un ID de session au début de la lecture vidéo. Ceci est important car l’ID de session est requis pour tous les appels de suivi suivants.

Il se peut que votre lecteur déclenche des événements avant que la réponse sessions ne soit renvoyée (avec le paramètre d’ID de session) par le serveur principal. Dans ce cas, votre application doit mettre en file d’attente tout événement de suivi ayant lieu entre la requête sessions et sa réponse. Lorsque la réponse sessions arrive, vous devez d’abord traiter les événements mis en file d’attente, puis commencer à traiter les événements en direct avec les appels events.

REMARQUE

La requête events ne renvoie pas de données au client au-delà d’un code de réponse HTTP.

Vérifiez le lecteur de référence de votre distribution pour trouver le moyen de traiter les événements avant de recevoir un ID de session. Par exemple :

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 
    }; 
};

Traiter les événements mis en file d’attente - Le lecteur de référence traite les événements mis en file d’attente comme suit :

    […] 
    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 = []; 
}

Continuez à traiter les événements de suivi à mesure qu’ils se produisent.

Sur cette page

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