Show Menu
ARGOMENTI×

Eventi in coda quando la risposta delle sessioni è lenta

L'API Media Collection è RESTful: ad esempio, effettuerete una richiesta HTTP e attenderete la risposta. Si tratta di un punto importante solo quando effettuate una richiesta di sessioni per ottenere un ID sessione all’inizio della riproduzione video. Questo è importante perché l'ID sessione è richiesto per tutte le chiamate di tracciamento successive.
È possibile che il lettore attivi eventi prima che la risposta Sessioni restituisca (con il parametro ID sessione) dal backend. In tal caso, l'app deve mettere in coda tutti gli eventi di tracciamento che arrivano tra la richiesta Richiesta sessioni Sessioni e la relativa risposta. Quando arriva la risposta Sessioni, devi prima elaborare qualsiasi evento in coda, quindi puoi iniziare a elaborare eventi live con le chiamate Eventi .
La richiesta Eventi, richiesta Eventi non restituisce i dati al client oltre un codice di risposta HTTP.
Controllate il lettore di riferimento nella distribuzione per trovare un modo per elaborare gli eventi prima di ricevere un ID sessione. Ad esempio:
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 
    }; 
};

Elabora tutti gli eventi in coda - Il lettore di riferimento elabora gli eventi in coda come segue:
    […] 
    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 = []; 
}

Continuate a elaborare gli eventi di tracciamento man mano che si verificano.