Vonage Video-Übergangsleitfaden für Ruby
Der Übergang von OpenTok-Ruby-SDK zu vonage-ruby-sdk
Einführung
Zweck
Das Ziel dieses Dokuments ist es, einen Ausgangspunkt für den Übergang vom OpenTok Ruby Server SDK zum Vonage Ruby Server SDK zu bieten.
Umfang
In diesem Dokument wird davon ausgegangen, dass Sie mindestens die Version 4.9.0 oder höher des OpenTok Ruby SDK. Eine erste Implementierung der Video API wurde dem Ruby Server SDK in Version 7.19.0mit zusätzlichen Funktionen, die in Version 7.24.0. Für Ihre Migration empfehlen wir jedoch die Verwendung der aktuellste Version des Vonage Ruby SDK, die Sie unter GitHub oder RubyGems.
Annahmen
Dieser Leitfaden richtet sich an einen professionellen Softwareentwickler. Es werden zumindest Grundkenntnisse in Ruby, gängigen Ruby-Entwicklerwerkzeugen und Git (oder einem anderen Versionskontrollsystem) vorausgesetzt. Sie sollten mit dem Lesen und Schreiben von Ruby-Code, der Verwaltung von Projektabhängigkeiten, der Bereitstellung und Ausführung eines Ruby-Projekts vertraut sein. Eine Einführung in die Ruby-Sprache, -Plattform und die dazugehörigen Werkzeuge würde den Rahmen dieses Dokuments sprengen.
Ressourcen
Die folgenden Links sind nützlich für weiterführende Lektüre zu diesem Dokument und als Referenz für alles, was nicht in diesem Dokument behandelt wird:
Vonage
- Vonage Video-Dokumentation
- Vonage Video API-Spezifikation
- Vonage Ruby Server SDK Video-Nutzungsanleitung
- Vonage Ruby Server SDK Rubydocs
- Vonage Ruby Server SDK Video-Quellcode
- Vonage Ruby Server SDK GitHub Repo
- Vonage Ruby Server SDK veröffentlicht Artefakte auf RubyGems
TokBox
- OpenTok API REST-Referenz
- OpenTok Ruby Server SDK Dokumentation
- OpenTok Ruby Server SDK Quellcode
- OpenTok Ruby Server SDK GitHub-Verzeichnis
- OpenTok Ruby Server SDK veröffentlicht Artefakte auf RubyGems
Planung Ihrer Migration
Bevor Sie von OpenTok auf Vonage Video umsteigen, sollten Sie den Umfang der Aufgabe bedenken, um realistische Erwartungen zu setzen.
Bewertung der Auswirkungen
Um die Auswirkungen der Migration auf Ihre Anwendung zu beurteilen, müssen Sie einige Fragen berücksichtigen.
Wie viel des Codes Ihrer Anwendung vom OpenTok SDK ab? Erstellen Sie eine Liste aller Dateien, in denen das SDK direkt verwendet wird. Eine Möglichkeit, dies festzustellen, könnte sein, alle
.rbDatei, die einerequire 'opentok'Referenz. Sie können zum Beispiel die Dateien in Ihrem Projekt nach der Anweisung durchsuchenrequire 'opentok'Verwenden Sie einen Code-Editor, eine IDE oder ein Befehlszeilentool, um die betroffenen Dateien zu identifizieren.Wie viele Welche Funktionen des OpenTok SDK nutzt Ihre Anwendung? Eine Anwendung, die das SDK ausschließlich zur Erstellung von Videositzungen und zur Generierung von Client-Tokens nutzt, wird wahrscheinlich einfacher zu migrieren sein als eine Anwendung, die auch Archivierung, Übertragung, Moderation und andere Funktionen nutzt.
Welche der Funktionen des OpenTok SDK nutzt Ihre Anwendung? Einige Funktionen können mehr Aufwand für die Migration erfordern als andere. Siehe die Abschnitt Wichtige Änderungen und Überlegungen für Details zu Änderungen zwischen der Implementierung der beiden SDKs.
Wie eng gekoppelt ist Ihr Anwendungscode mit dem OpenTok SDK? Rufen Sie beispielsweise im Rahmen einer Ruby on Rails-Anwendung Methoden aus dem SDK direkt in Ihren Controller-Aktionen auf, oder haben Sie diese Methodenaufrufe auf irgendeine Weise abstrahiert (z. B. durch Verwendung des Gateway Pattern oder Adapter Pattern)?
Möglicherweise gibt es für Ihr spezifisches Projekt noch weitere Überlegungen, die oben nicht aufgeführt sind.
Zeitleiste
Berücksichtigen Sie die Zeit, die für die Umstellung erforderlich ist. Dies hängt von einer Reihe von Faktoren ab, z. B. von Ihrer Vertrautheit mit dem Projekt und den Auswirkungen der Migration des Projekts (wie beschrieben über). Es ist wichtig, eine gute Test-Suite zu haben, um die Gleichwertigkeit der Implementierungen von OpenTok und Vonage Video zu verifizieren. Die Zeit, die für die Umstellung benötigt wird, beträgt etwa proportional zur Anzahl der Stellen, an denen das OpenTok SDK in Ihrem Code verwendet wird, sowie zur Vielfalt der verwendeten Funktionen, aber, wie bereits erwähnt, werden einige API-Aufrufe einfacher zu ersetzen sein als andere.
Versionierung
OpenTok und Vonage Video sind zwei unterschiedliche Produkte. Das macht eine schrittweise Migration unmöglich.
Sie sollten für den Übergang einen temporären Zweig in Ihrem Versionskontrollsystem anlegen, damit Sie schrittweise und häufig Änderungen vornehmen können, ohne das bestehende Projekt zu zerstören. Sie können auch die Tests des bestehenden Projekts als Orakel für die Korrektheit verwenden. Idealerweise sollten Sie den Übergangszweig erst dann mit dem Hauptzweig zusammenführen, wenn Sie die Umstellung abgeschlossen haben.
Wichtige Änderungen und Überlegungen
Die Vonage Video API hat die gleichen Funktionen wie OpenTok, und das Ruby SDK wird aktiv gepflegt, um mit der API-Spezifikation übereinzustimmen. Es gibt jedoch einige Unterschiede zwischen den beiden SDKs, die Sie kennen sollten.
Neue Funktionen und Standards
Struktur des Pakets
Sowohl das OpenTok Ruby SDK als auch das Vonage Ruby SDK folgen dem Ansatz für die Strukturierung eines Ruby-Gems, der von Bundler empfohlen wirdund sind daher im Großen und Ganzen ähnlich aufgebaut. Es gibt jedoch eine Reihe von Unterschieden:
- Das Vonage Ruby SDK verwendet die zeitwerk Bibliothek für das automatische Laden von Code und folgt daher den Konventionen von zeitwerk für die Datei- und Verzeichnisstruktur und -benennung. Wenn Sie wissen, wie Ruby on Rails Applications strukturiert sind, dann sind Sie mit diesen Konventionen bereits vertraut. Wenn nicht, dann lohnt es sich, ein paar Minuten zu investieren sich mit ihnen vertraut zu machen. Betrachtet man diese Struktur im Hinblick auf die Video API-Implementierung:
- Die primäre
VideoKlasse ist definiert in diese Datei - Alle Klassen mit einem Namensraum unter
Video(wie zum BeispielVideo::BroadcastsundVideo::Archives) sind definiert unter dieses Verzeichnis.
- Das Vonage Ruby SDK implementiert neben der Video API weitere Vonage APIs. Das SDK implementiert Klassen, die jedes dieser API-Produkte darstellen, und die
ClientKlasse bietet Zugriffsfunktionen für Objekte dieser Klassen.
Unter Berücksichtigung der Punkte 1 und 2 oben, ausgehend von der Vonage Client Objekt können ein oder mehrere zusätzliche Methodenaufrufe erforderlich sein, bevor Sie zu der Methode gelangen, die den spezifischen Video API-Endpunkt darstellt, den Sie aufrufen möchten.
Beispiel 1: Erstellen einer Sitzung
Die Verwendung des OpenTok Ruby SDK könnte etwa so aussehen:
# 1: instantiate an `OpenTok` object (assuming credentials stored as environment variables)
opentok = OpenTok::OpenTok.new(
ENV['OPENTOK_API_KEY'],
ENV['OPENTOK_API_SECRET']
)
# 2: invoke the `create_session` method on the `OpenTok` object
session = opentok.create_session
Bei der Verwendung des Vonage Ruby SDK könnte das etwa so aussehen:
# 1: instantiate a Vonage `Client` object (assuming credentials stored as environment variables)
client = Vonage::Client.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
# 2: access the `Video` object
video = client.video
# 3: invoke the `create_session` method on the `Video` object
session = video.create_session
Wie Sie es von Ruby gewohnt sind, können Sie die Schritte 2 und 3 durch Methodenverkettung kombinieren:
session = client.video.create_session
Beispiel 2: Abrufen einer Liste von Archivaufzeichnungen
Die Verwendung des OpenTok Ruby SDK könnte etwa so aussehen:
# 1: instantiate an `OpenTok` object
opentok = OpenTok::OpenTok.new(
ENV['OPENTOK_API_KEY'],
ENV['OPENTOK_API_SECRET']
)
# 2: access the `Archives` object
archives = opentok.archives
# 3: invoke the `all` method on the `Archives` object
archive_list = archives.all
Bei der Verwendung des Vonage Ruby SDK könnte das etwa so aussehen:
# 1: instantiate a Vonage `Client` object
client = Vonage::Client.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
# 2: access the `Video` object
video = client.video
# 3: access the `Archives` object
archives = video.archives
# 4: invoke the `list` method on the `Archives` object
archive_list = archives.list
Auch hier können Schritte durch Methodenverkettung kombiniert werden:
archive_list = client.video.archives.list
Eine Anmerkung zum Tippen
Das Vonage Ruby SDK verwendet Sorbet für die statische Typüberprüfung. Um die Migration vom OpenTok Ruby SDK zum Vonage Ruby SDK zu vereinfachen, wurden derzeit für keine der Methoden in der Video API-Implementierung Typsignaturen definiert. Typsignaturen werden für diese Methoden als Teil einer zukünftigen Version definiert werden.
Ein Hinweis zu Front-End-Änderungen
Die für Ihre Anwendung verwendeten Front-End-Bibliotheken sind die gleichen wie die OpenTok-Bibliotheken. Es gibt jedoch eine kleine Änderung in Bezug auf ihre Verwendung.
Die Interaktion zwischen Back-End und Front-End ist dieselbe: Das SDK erstellt Sitzungen und generiert auch Token für die Front-End-Client-Bibliotheken, um auf diese Sitzungen zuzugreifen. Genau wie bei einer OpenTok-Implementierung erwarten die Front-End-Client-Bibliotheken, dass der Back-End-Server ein Sitzungs-ID und eine Token. Bei einer Vonage-Implementierung muss der Server jedoch auch eine Applikation ID. Diese Applikations-ID ersetzt praktisch die API-Schlüssel die in einer OpenTok-Implementierung verwendet werden würden, obwohl die Front-End-Client-Bibliotheken weiterhin Etikett sie als API-Schlüssel. Weitere Informationen zu Application IDs finden Sie im Abschnitt über Änderungen bei der Authentifizierung.
Diese kleine Änderung in der Interaktion zwischen Front-End und Back-End kann einige kleinere Aktualisierungen Ihrer Implementierung erfordern, zum Beispiel in Ihren Ansichtsvorlagen oder in der Logik, die Daten an diese Ansichtsvorlagen weitergibt.
Paket-Update
Um das Vonage Ruby SDK zu verwenden, müssen Sie die Abhängigkeiten Ihres Projekts aktualisieren, um die vonage Ruby-Gem anstelle des opentok Ruby-Edelstein. Sie können dies tun, indem Sie Ihr Gemfile zur Aufnahme der vonage gem:
gem "vonage"
und dann läuft bundle install.
Änderungen bei der Authentifizierung
Die opentok gem verwendet ein api_key und api_secret für die Autorisierung, die Video API-Implementierung in der vonage gem verwendet ein JWT. Das SDK übernimmt die JWT-Generierung im Hintergrund für Sie, benötigt aber eine application_id und private_key als Anmeldeinformationen, um das Token zu generieren. Diese erhalten Sie, indem Sie eine Vonage Application einrichten und eine Anwendungs-ID und einen privaten Schlüssel für diese Anwendung erzeugen. In der Vonage Application können Sie auch andere Einstellungen vornehmen, z. B. für welche API-Produkte die Anwendung aktiviert ist, Rückruf-URLs, Speicherpräferenzen usw.
Es gibt eine Reihe von Möglichkeiten, wie Sie eine Vonage Application erstellen können:
- Über die Dashboard für Entwickler
- Über die Application API
- Durch die Verwendung des Vonage CLI
GEBEN SIE NIEMALS IHREN PRIVATEN SCHLÜSSEL WEITER ODER VERÖFFENTLICHEN SIE IHN!
Sollten Sie Ihren privaten Schlüssel verlieren oder sollte er auf irgendeine Weise kompromittiert werden, können Sie einen neuen privaten Schlüssel erzeugen, indem Sie die Vonage-Anwendung bearbeiten. Wenn Sie die Vonage Application mit einem neuen Schlüssel aktualisieren, wird der alte Schlüssel automatisch ungültig. Wenn Sie eine Vonage Application über das Dashboard bearbeiten, müssen Sie auf "Speichern" klicken, damit die Änderungen wirksam werden.
Ihr application_id und private_key werden dann bei der Instanziierung einer Client Objekts (im folgenden Beispiel wird davon ausgegangen, dass Sie diese als Umgebungsvariablen gesetzt haben):
client = Vonage::Client.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
Wenn Sie Ihre Umgebungsvariablen so benannt haben, wie im obigen Beispiel gezeigt, können Sie die Argumente in der Anweisung new Methodenaufruf. Das SDK sucht automatisch die ENV Hash nach Variablen mit diesen Namen und verwendet deren Werte, wenn er sie findet. In diesem Fall ist das folgende Beispiel für die Instanziierung einer Vonage::Client Objekt ist funktional gleichwertig mit dem vorherigen:
client = Vonage::Client.new
Beachten Sie, dass der Wert für die VONAGE_PRIVATE_KEY kann der Pfad zu dem Ort sein, an dem sich Ihre private.key Datei. Wie Sie den Wert für diesen Pfad festlegen, hängt davon ab, wie Sie Ihre Anwendung bereitstellen wollen. Wenn Sie Ihre Anwendung lokal bereitstellen, können Sie Ihre private.key Datei im Stammverzeichnis Ihres Projekts und legen Sie den Pfad als private.key. Zum Beispiel, wenn Sie dotenv zur Verwaltung Ihrer Umgebungsvariablen, Ihrer VONAGE_PRIVATE_KEY Definition in Ihrem .env Datei würde wie folgt aussehen:
VONAGE_PRIVATE_KEY=private.key
Wenn Sie die oben beschriebene Methode verwenden, fügen Sie unbedingt .env und private.key zu Ihrem .gitignore Datei.
Wenn die Bereitstellung für die Produktion über einen Dienst wie RenderingDiese Art von Diensten bietet in der Regel Möglichkeiten zur sicheren Speicherung von Dateien wie privaten Schlüsseln. Die genaue Methode dafür hängt von dem verwendeten Dienst ab und geht über den Rahmen dieses Dokuments hinaus.
Änderungen der Methode
Zwischen dem OpenTok Ruby SDK und der Video API-Implementierung im Vonage Ruby SDK gibt es einige Änderungen bei den Methoden.
Parameter der Methode
Alle Positionsparameter in Methodensignaturen wurden im Vonage SDK durch Schlüsselwortparameter ersetzt.
Änderungen des Methodennamens
Einige Methoden wurden umbenannt und/oder verschoben, um sie übersichtlicher zu gestalten und/oder um ihre Funktion besser zu verdeutlichen. Diese sind unten aufgeführt:
| OpenTok Methode Name | Vonage Video Methode Name |
|---|---|
opentok.generate_token | video.generate_client_token |
opentok.archives.all | video.archives.list |
opentok.archives.create | video.archives.start |
opentok.archives.delete_by_id | video.archives.delete |
opentok.archives.find | video.archives.info |
opentok.archives.layout | video.archives.change_layout |
opentok.archives.stop_by_id | video.archives.stop |
opentok.broadcasts.all | video.broadcasts.list |
opentok.broadcasts.create | video.broadcasts.start |
opentok.broadcasts.delete_by_id | video.broadcasts.delete |
opentok.broadcasts.find | video.broadcasts.info |
opentok.broadcasts.layout | video.broadcasts.change_layout |
opentok.connections.forceDisconnect | video.moderation.force_disconnect |
opentok.renders.find | video.renders.info |
opentok.signals.send | video.signals.send_to_one und video.signals.send_to_all |
opentok.streams.all | video.streams.list |
opentok.streams.find | video.streams.info |
opentok.streams.force_mute | video.moderation.mute_single_stream |
opentok.streams.force_mute_all | video.moderation.mute_multiple_streams |
opentok.streams.layout | video.streams.change_layout |
Antwort-Objekte
Im Gegensatz zum OpenTok Ruby SDK verwendet das Vonage Ruby SDK bei der Deserialisierung der JSON-Payloads einer HTTP-Antwort keine spezifischen Objektklassen, sondern deserialisiert die Antworten in generische Antwortobjekte.
Einzelne Ressource Antwortobjekte
Antworten, bei denen die JSON-Nutzdaten eine einzelne Ressource darstellen, werden vom Vonage Ruby SDK in ein generisches Format deserialisiert. Vonage::Response Objekt.
Allgemein können Sie Folgendes verwenden Vonage::Response Objekts auf die gleiche Weise, wie Sie es mit dem OpenTok::Archive, OpenTok::Broadcast, OpenTok::Streamusw., indem Sie auf Eigenschaften aus der Nutzlast der Antwort zugreifen können, indem Sie Methoden des Objekts mit Namen aufrufen, die dem Eigenschaftsnamen entsprechen. Wenn Sie z. B. eine neue Archivaufzeichnung starten und ihre ID aus der Antwort abrufen möchten, wäre die Vorgehensweise bei den beiden SDKs im Großen und Ganzen ähnlich.
Beispiel: OpenTok Ruby SDK
opentok = OpenTok::OpenTok.new(
ENV['OPENTOK_API_KEY'],
ENV['OPENTOK_API_SECRET']
)
session = opentok.create_session
archive = opentok.archives.create(session.session_id) # => returns a OpenTok::Archive object
# calling the `id` method on the object returns the value of the `id` property in the JSON payload
archive.id
Beispiel: Vonage Ruby SDK
client = Vonage::Client.new.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
session = client.video.create_session
archive = client.video.archives.start(session_id: session.session_id) # => returns a Vonage::Response object
# calling the `id` method on the object returns the value of the `id` property in the JSON payload
archive.id
Ein wesentlicher Unterschied in der Implementierung der Antwortobjekte zwischen den beiden SDKs besteht in der Verwendung des Fassadenmusters in den Antwortobjekten des OpenTok Ruby SDKs. Die Antwortobjekte des OpenTok SDK werden mit einem Verweis auf das Objekt initialisiert, das die Methode aufgerufen hat, mit der sie erstellt wurden. Dieses Objekt wiederum enthält einen Verweis auf ein OpenTok::Client Objekt. Das bedeutet, dass Sie Methoden, die mit einigen der Video API-Endpunkte interagieren, direkt auf diesen Objekten aufrufen können. Die Antwortobjekte im Vonage Ruby SDK bieten keine direkte Möglichkeit, Methoden aufzurufen, die Video API Endpunkte umschließen, so dass Sie Objekte verwenden müssen, die die spezifische Feature-Klasse als Aufrufer der Methode repräsentieren.
Nehmen wir an, Sie möchten eine laufende Archivaufzeichnung stoppen.
Beispiel: OpenTok Ruby SDK
Im OpenTok SDK können Sie die Funktion stop Methode direkt auf die Archive Objekt, das von der Archives#create Methodenaufruf.
opentok = OpenTok::OpenTok.new(
ENV['OPENTOK_API_KEY'],
ENV['OPENTOK_API_SECRET']
)
session = opentok.create_session
archives = opentok.archives
archive_1 = archives.create(session.session_id) # => returns a OpenTok::Archive object
# calling the `stop` method directly on the returned OpenTok::Archive object stops the archive recording
archive_1.stop
Beispiel: Vonage Ruby SDK
Im Vonage SDK müssen Sie die Funktion stop Methode auf eine Video::Archives Objekt und übergeben Sie die entsprechenden archive_id als Argument.
client = Vonage::Client.new.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
session = client.video.create_session
archives = client.video.archives
archive_1 = archives.start(session_id: session.session_id) # => returns a Vonage::Response object
# calling the `stop` method on a Video::Archives object, passing in the `id` of the archive you want to stop
archives.stop(archive_id: archive_1.id)
Multi-Ressourcen-Antwort-Objekte
Antworten, bei denen die JSON-Nutzdaten eine Sammlung von einer oder mehreren Ressourcen darstellen, werden vom Vonage Ruby SDK in eine Datei deserialisiert. ListResponse Objekt mit dem Namenszusatz "Produkt" und dem Objekttyp, der die Anfrage gestellt hat, zum Beispiel Vonage::Video::Broadcasts::ListResponse.
Im Wesentlichen bieten sie die gleiche Funktionalität wie die List-Response-Objekttypen aus dem OpenTok Ruby SDK, da sie iterierbare Sammlungen einzelner Ressourcenobjekte sind. Die Implementierung unterscheidet sich geringfügig zwischen den SDKs, aber im Allgemeinen sollte dies keine Auswirkungen auf die Art und Weise haben, wie Sie mit diesen Objekten interagieren können, und wird im Folgenden eher der Vollständigkeit halber beschrieben:
- Die
ListResponseObjekte im Vonage Ruby SDK implementieren eineeachMethode und schließen RubysEnumerableModul. - Die listenartigen Antworten im OpenTok Ruby SDK (z.B.
ArchiveList,BroadcastListusw.) Unterklasse von Ruby'sArrayKlasse.
Fehlerantwort-Objekte
Beide SDKs definieren eine generische Fehlerklasse, die eine Unterklasse von Ruby's StandardError Klasse, mit spezifischeren Fehlerklassen, die von dieser generischen Klasse untergeordnet werden.
Das OpenTok Ruby SDK definiert eine OpenTok::OpenTokError Klasse und dann spezifische Fehlerklassen nach Merkmalstyp, die Unterklassen von OpenTokError, wie zum Beispiel OpenTokArchiveError, OpenTokBroadcastError, OpenTokAuthenticationError, usw. Keiner dieser Fehlertypen implementiert eine zusätzliche Funktionalität, die über das hinausgeht, was StandardError bietet.
Das Vonage Ruby SDK definiert eine generische Vonage::Error Klasse und auch eine Vonage::APIError Klasse, die Unterklassen von Vonage::Error. Die APIError Klasse repräsentiert Fehler, die aus einer HTTP-Anfrage an einen Vonage-API-Endpunkt resultieren. Das SDK definiert dann eine Reihe von spezifischeren Fehlerklassen, je nach Art der erhaltenen Antwort, die Unterklassen von APIError. Diese Klassen umfassen Vonage::ClientError (für 4xx Antworten), Vonage::ServerError (für 5xx Antworten), und Vonage::AuthenticationError (die Unterklassen von Vonage::ClientErrorund wird speziell verwendet für 401 Antworten).
Die APIError Klasse implementiert einige zusätzliche Logik, die Getter-Methoden für die Net:HTTPResponse Objekt sowie den Antwortcode, die Kopfzeilen und den Textkörper. Sie können die Ausnahme retten, um auf diese Eigenschaften zuzugreifen.
Beispiel
client = Vonage::Client.new.new(
application_id: ENV['VONAGE_APPLICATION_ID'],
private_key: ENV['VONAGE_PRIVATE_KEY']
)
begin
session = client.video.create_session
rescue Vonage::APIError => error
if error.http_response
error.http_response # => #<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
error.http_response_code # => "401"
error.http_response_headers # => {"date"=>["Sun, 24 Sep 2023 11:08:47 GMT"], ...rest of headers}
error.http_response_body # => {"title"=>"Unauthorized", ...rest of body}
end
end
Strategien für die Migration
Inkrementelle Migration
Wir würden eine schrittweise Migration empfehlen, bei der Sie von einem Anwendungsfall zum nächsten wechseln und jedes Mal, wenn Sie einen "stabilen" Zustand erreicht haben, eine Verpflichtung eingehen. Das würde natürlich voraussetzen, dass OpenTok und Vonage Video API vorübergehend nebeneinander existieren.
Bitte beachten Sie, dass während eines solchen inkrementellen Prozesses Ihre Anwendung als Ganzes nicht mehr voll funktionsfähig wäre, da OpenTok und Vonage Video API zwei völlig unterschiedliche Systeme sind.
Der genaue Plan für einen schrittweisen Ansatz hängt davon ab, wie viele und welche Video API-Funktionen Sie verwenden und wie Sie diese Funktionen in Ihre Anwendung integriert haben. Auch wenn es nicht möglich ist, in diesem Bereich eine implementierungsspezifische Anleitung zu geben, könnte ein allgemeiner Plan darin bestehen, den Code Feature für Feature und innerhalb jedes Features Methode für Methode zu aktualisieren.
Ein guter Ansatzpunkt wäre jeder Code, der eine OpenTok::OpenTok Objekt und ersetzen Sie dieses durch Code, der ein Vonage::Client Objekts, nachdem der Vergleich zwischen den beiden in der Struktur des Pakets Abschnitt.
Der nächste Schritt könnte die Aktualisierung des Codes sein, der sich mit der Erstellung von Sitzungen, der Erzeugung von Client-Tokens und der Übergabe von Daten an die Front-End-Client-Bibliotheken befasst.
Sie können dann nacheinander jeden Code aktualisieren, der bestimmte Funktionen der Video API implementiert. Um ein Beispiel zu nennen: Archive:
- Identifizieren Sie jeden Code, bei dem
Archiveserstellt werden oder mit denen interagiert wird. - Aktualisieren Sie die Methodenaufrufe, so dass die Methoden aufgerufen werden auf
client.videoanstelle vonopentokObjekte. - Aktualisieren Sie alle Methodennamen die sich verändert haben.
- Wenn ein Methodenaufruf Argumente übergibt, aktualisieren Sie ihn, um die richtigen Schlüsselwortparameter zu verwenden.
- Identifizieren Sie jeden Code, in dem eine Methode direkt auf einer
ArchiveAntwortobjekt, und ändern Sie dieses wie in der Antwort-Objekte Abschnitt.
Wiederholen Sie diesen Vorgang für jedes Merkmal und jede Methode.
Möglicherweise müssen Sie zusätzliche Schritte unternehmen, z. B. die Aktualisierung des Codes, in dem Sie spezifische Fehler retten. Die obige Liste von Schritten ist nicht erschöpfend, sollte aber hoffentlich einen guten Ausgangspunkt für die Festlegung Ihres Migrationsplans darstellen.
Gateway/Adapter-Muster
Wenn Sie nicht bereits eine Art von Gateway oder Adaptermuster als Teil Ihrer Implementierung verwenden, wäre diese Migration eine gute Gelegenheit, dies zu tun. Dies würde nicht nur die Migration erleichtern, sondern auch bedeuten, dass Ihr Anwendungscode im Allgemeinen weniger eng mit dem SDK-Code gekoppelt wäre.
Es gibt viele verschiedene Ansätze zur Implementierung dieser Muster, je nachdem, wie Ihre Anwendung strukturiert ist und/oder welches Framework Sie verwenden. Es würde den Rahmen dieses Dokuments sprengen, spezifische Anleitungen in diesem Bereich zu geben.
Test-Empfehlungen
Gründliche Tests sind für einen reibungslosen Übergang sowohl während als auch nach der Migration unerlässlich. Dazu gehören nicht nur Unit-Tests, sondern auch Integrations- und Regressionstests. Es lohnt sich auch, Ihren Anwendungsablauf mindestens einmal vor und nach der Migration manuell zu testen, um sicherzustellen, dass Ihre automatisierten Tests das tun, was Sie glauben, dass sie es tun, oder um Probleme aufzuspüren, die die Tests möglicherweise nicht erkannt haben. Sie können sogar die Erstellung von Äquivalenztests in Betracht ziehen. Dabei geht es darum, eine Suite zu erstellen, die bestätigt, dass die OpenTok- und die Vonage Video-Version Ihrer Anwendung das Gleiche tun. Diese Tests können dann verworfen werden, sobald der Übergang abgeschlossen ist und die OpenTok-Version Ihrer Anwendung entfernt wurde.
Fehlersuche & Unterstützung
Support-Kanäle
Allgemeine Hilfe und Diskussionen zum Umstieg auf Vonage Video finden Sie in der #video-api Kanal auf unserem Community Slackwo Sie Antworten von Vonage-Mitarbeitern und anderen Benutzern erhalten können. Sie können uns auch erreichen unter X @VonageDev.
Der Hauptansprechpartner für alle Probleme mit der Video API selbst ist support@api.vonage.com.
Wenn Sie einen Fehler im SDK finden, bitten wir Sie ein Problem mit Schritten zur Reproduktion auf GitHub einreichen.