Show Menu
TOPICS×

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