Événements de mise en file d’attente lorsque la réponse des sessions est lente queueing-events-when-sessions-response-is-slow

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.

NOTE
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.

recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb