Leitfaden: Status und Zustand verwalten
Leitfaden: Status und Zustand verwalten
Einführung
In diesem Leitfaden erfahren Sie, wie Sie den Gerätestatus verwalten und die Synchronisierung mit Frame.io beibehalten.Wir verwenden ein WebSocket-Protokoll, das eine Echtzeitkommunikation zwischen Frame.io und Ihrem Gerät ermöglicht.Falls Sie mit WebSockets noch nicht vertraut sind, hilft Ihnen dieser Leitfaden dabei, deren Umsetzung für C2C-Integrationen zu verstehen.
Dank WebSockets kann Frame.io Nachrichten an Ihr Gerät senden und bietet durch die Aufrechterhaltung einer dauerhaften Verbindung einen effizienteren Kommunikationskanal als herkömmliche HTTP-Anfragen.
In diesem Leitfaden behandeln wir folgende Punkte:
- Eine Socket-Verbindung öffnen, um anzuzeigen, dass Ihr Gerät „online“ ist
- Informationen über die Geräteverbindung abrufen
- Verfügbarkeit von Frame.io-Backend prüfen
Voraussetzungen
Wenn Sie es noch nicht getan haben, lesen Sie bitte den Leitfaden C2C implementieren: Einrichtung, bevor Sie fortfahren.Sie benötigen den access_token, den Sie während des Authentifizierungs- und Autorisierungsprozesses erhalten haben.Bitte beachten Sie, dass Token nach 8 Stunden ablaufen. Daher müssen Sie Ihren Token möglicherweise aktualisieren oder den Autorisierungsvorgang erneut durchlaufen.Für die WebSocket-Verbindungsbeispiele in diesem Leitfaden empfehlen wir die Verwendung von websocat, einem CLI-Tool mit umfassenden Installationsleitfäden für verschiedene Betriebssysteme.
macOS
Installieren mit: brew install websocat
Verbindungsinformationen abrufen
Nach jeder neuen Autorisierung oder Tokenaktualisierung sollte das Gerät sofort den identity-Endpunkt abrufen.Hier finden Sie wichtige Informationen zu Ihrer Verbindung:
Die Antwort sieht wie folgt aus (einige Daten sind abgekürzt):
Dieser Endpunkt hilft bei der Prüfung der Verbindungsdetails.Ihr Gerät sollte Benutzenden diese Informationen anzeigen:
-
project.name– Name des verbundenen Projekts -
authorization.creator.name– Person, die das Gerät autorisiert hat -
authorization.expires_at(optional) – Ablaufzeit der Verbindung, falls festgelegt -
status(optional) – Gerätestatus, der wie folgt lauten kann: -
online– Gerät ist online und gekoppelt *offline– Gerät hat seit über 5 Minuten keine Verbindung hergestellt (durch Abfrage dieses Endpunkts wird der Status aufonlinegesetzt) *paused– Gerät wurde im Frame.io-Fenster „C2C-Verbindungen“ vorübergehend deaktiviert
Da sich der Ablauf- und Pausenstatus in Frame.io jederzeit ändern kann, sollten Sie diese Informationen regelmäßig abrufen, wenn Sie sie den Benutzenden anzeigen.Wir empfehlen, die Abfragehäufigkeit auf höchstens einmal alle 60 Sekunden zu beschränken.
id
Notieren Sie den id-Wert, da Sie ihn für die WebSocket-Verbindung benötigen, im nächsten Abschnitt
WebSocket-Verbindung herstellen
Der Bereich „C2C-Verbindungen“ in Frame.io zeigt den Verbindungsstatus jedes Geräts an.Wenn ein Gerät über eine aktive Socket-Verbindung verfügt, wird es als online angezeigt, wobei in der oberen linken Ecke der Karte ein grünes Symbol erscheint.Geräte ohne aktive Verbindung werden als offline angezeigt und sind ausgegraut.
Der Server trennt Socket-Verbindungen automatisch, wenn 60 Sekunden lang keine „Heartbeat“-Nachricht empfangen wird.Obwohl dieses Intervall ausreichend ist, empfehlen wir aus Gründen der Zuverlässigkeit, alle 15 Sekunden Heartbeats zu senden.Wenn die Verbindung unerwartet geschlossen wird, stellen Sie sie einfach wieder her.
Die Verbindung zum WebSocket von Frame.io erfolgt in zwei Schritten:
- Aufbau des TCP/IP-Handshakes und Öffnen der physischen WebSocket-Verbindung
- Dem gerätespezifischen Kanal beitreten, um Ihr Gerät gegenüber unserem Backend zu identifizieren
So öffnen Sie die WebSocket-Verbindung:
Der Autorisierungs-Header
Im Gegensatz zu herkömmlichen API-Endpunkten, bei denen der Zugriffstoken im Authorization-Header steht, wird er bei WebSocket-Verbindungen als URL-kodierter Abfrageparameter übermittelt.Beachten Sie, dass Sie vor Ihrem Zugriffstoken weiterhin Bearer (mit einem Leerzeichen) angeben müssen.In URL-codierten Zeichenfolgen werden Leerzeichen als %20 angezeigt, daher wird diese Formatierung erwartet.
Eine erfolgreiche Verbindung gibt den Statuscode 101 zurück, der darauf hinweist, dass das Protokoll auf wss umschaltet.Dies wird möglicherweise automatisch von Ihrer WebSocket-Bibliothek verarbeitet.Ein abgelaufener Token erzeugt eine 403-Antwort.Schließen Sie sich dann dem Kanal Ihres Geräts an, indem Sie diese JSON-Nachricht senden und dabei die id aus Ihren Verbindungsinformationen verwenden:
Sie erhalten eine Bestätigung:
Die Felder ref und payload
Das Feld ref korreliert Antworten mit ihren initiierenden Ereignissen.Da die Ereignisreihenfolge nicht garantiert wird, hilft diese Kennung, Serverantworten mit den auslösenden Ereignissen zu koppeln.Frame.io verwendet dieses Feld nicht für eingehende Ereignisse, sondern dient lediglich als Referenz für die Kundschaft.Das Feld payload muss immer vorhanden sein, kann aber oft eine leere Zeichenfolge sein (wir geben an, wann eine Payload bestimmte Inhalte erfordert).
Überprüfen Sie das C2C-Dashboard – Ihr Gerät sollte jetzt als online angezeigt werden.Wir empfehlen die Implementierung eines Hintergrundprozesses, um diese Verbindung zu erhalten:
Das Format der Heartbeat-Nachricht:
So sieht die Antwort darauf aus:
Wenn eine aktive Socket-Verbindung und ein Kanalabonnement bestehen, wird Ihr Gerät im Bereich „C2C-Verbindungen“ von Frame.io als online angezeigt.Wenn die Verbindung beendet wird, wird sie als offline angezeigt.
Gerätestatus anzeigen
Anstatt die reinen Statuswerte (online, offline, paused) anzuzeigen, empfehlen wir, diese in aussagekräftigere, für Benutzende verständliche Anzeigen umzuwandeln:
- Paused: true/false –
trueanzeigen, wenn der Statuspausedlautet, andernfallsfalse - Connected: true/false – zeigt an, ob das Gerät das Frame.io-Backend erreichen kann (siehe Backend-Verbindungstest unten)
Den Status „Paused“ verwalten
Die Anzeige des Status „Pause“ ist optional. Es ist jedoch wichtig, die Funktion zu verstehen.
Mit der „Pause“-Funktion wird das Hochladen sensibler Inhalte vorübergehend blockiert.Sie blockiert nicht den Netzwerkverkehr, verhindert jedoch, dass bestimmte Medien Frame.io erreichen.Dies ist nützlich in Situationen wie beispielsweise beim Drehen von Szenen mit sensiblen Inhalten, in denen eine sofortige Speicherung in der Cloud möglicherweise nicht angebracht ist.
Die Pause wird über die Frame.io-Schnittstelle gesteuert, nicht über Ihre Integration.Wenn ein Gerät angehalten wird, werden nur Medien blockiert, die während der Pause erstellt wurden – zuvor aufgenommene Medien können weiterhin hochgeladen werden.
Wichtige Aspekte:
- Verlassen Sie sich bei der Überprüfung der Upload-Berechtigung nicht ausschließlich auf den „identity“-Endpunkt – unser Backend erledigt dies automatisch
- Socket-Ereignisse benachrichtigen Sie über Statusänderungen mit
event: "status_updated"undpayload: "paused"oder"resumed" - Ereignisse können zwar zur Statusverwaltung beitragen, sie können jedoch übersehen oder in falscher Reihenfolge übermittelt werden
- Ein
409-Fehler beim Hochladen bedeutet nicht zwangsläufig, dass das Gerät gerade pausiert ist – er kann darauf hindeuten, dass die Mediendatei während eines früheren Pausenzeitraums erstellt wurde - Wenn der Status „paused“ angezeigt wird, überprüfen Sie dessen Richtigkeit, indem Sie die Verbindungsdaten regelmäßig kontrollieren
Backend-Konnektivität überprüfen
Um die Verfügbarkeit des Frame.io-Backends zu prüfen, verwenden Sie diesen Endpunkt:
Für diesen Endpunkt ist keine Autorisierung erforderlich.Eine erfolgreiche Antwort zeigt die Verbindung an:
Diese Konsistenzprüfung ist besonders wertvoll, da sie die Konnektivität speziell mit Frame.io anstelle der allgemeinen Netzwerkverfügbarkeit bestätigt.Es kann Szenarien geben, in denen Ihr Netzwerk funktioniert, aber Frame.io aufgrund von Dienstproblemen oder Routing-Problemen nicht erreichbar ist.
Nächste Schritte
Wir empfehlen Ihnen, sich bei Fragen an unser Team zu wenden und mit dem Leitfaden zu einfachen Uploads fortzufahren.Wir freuen uns darauf, Ihren Integrationsprozess zu unterstützen.Weitere Informationen zur Verwaltung der Geräteautorisierung finden Sie im Leitfaden zur Autorisierungsverwaltung.