Einreihen von Ereignissen in die Warteschlange bei langsamer Sitzungsantwort queueing-events-when-sessions-response-is-slow

Bei der Mediensammlungs-API handelt es sich um eine RESTful-API. Das heißt, Sie stellen eine HTTP-Anfrage und warten auf die Antwort. Das ist nur wichtig, wenn Sie zu Beginn der Videowiedergabe eine Sitzungsanforderung stellen, um eine Sitzungs-ID abzurufen. Dies ist wichtig, da die Sitzungs-ID für alle nachfolgenden Tracking-Anrufe erforderlich ist.

Der Player löst möglicherweise Ereignisse aus, bevor Sitzungsantwort (mit dem Sitzungs-ID-Parameter) vom Backend zurückgegeben wird. In diesem Fall muss Ihre Anwendung sämtliche Tracking-Ereignisse in die Warteschlange einreihen, die zwischen der Sitzungsanforderung und ihrer Antwort eingehen. Wenn die Sitzungsantwort eingeht, sollten Sie zunächst alle Ereignisse in der Warteschlange verarbeiten. Anschließend können Sie mit den Ereignisaufrufen mit der Verarbeitung von Live-Ereignissen beginnen.

NOTE
Die Ereignisanfrage gibt neben einem HTTP-Antwortcode keine Daten an den Client zurück.

Im Referenz-Player in Ihrer Verteilung finden Sie eine Möglichkeit, Ereignisse vor dem Empfang der Sitzungs-ID zu verarbeiten. Beispiel:

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

Sämtliche Ereignisse in der Warteschlange verarbeiten: Der Referenz-Player verarbeitet die Ereignisse in der Warteschlange wie folgt:

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

Fahren Sie mit der Verarbeitung laufender Tracking-Ereignisse fort.

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