Einreihen von Ereignissen in die Warteschlange bei langsamer Sitzungsantwort
Erstellt für:
- Benutzende
- Admin
- Entwickler
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.
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.