2015-12-07 2 views
12

Ich baue eine React.js-Anwendung, die mit dem WebRTC-API interagiert, um Audio/Video-Anrufe zu tun. Wenn ein Anruf erfolgreich hergestellt wurde, wird ein "Ondstream" -Ereignis für die RTCPeerConnection-Instanz ausgelöst, die den Stream enthält, den ich als Entwickler mit einem Videoelement verbinden soll, um das Remotevideo für den Benutzer anzuzeigen.Wo WebRTC Streams speichern beim Erstellen von React App mit Redux

Problem, das ich habe, ist das Verständnis der beste Weg, um den Stream von dem Ereignis zu der React-Komponente für das Rendern zu erhalten. Ich habe es arbeitet erfolgreich mit nur den Strom in meinen redux Zustand Dumping, sondern in this other answer, der Schöpfer von redux Dan Abramov dies erwähnt:

[...] nicht Klassen innerhalb des Staates verwenden. Sie sind nicht serialisierbar wie sie sind. [...] Benutze einfache Objekte und Arrays.

Was ich fragen läßt, wenn ich nicht diese Ströme in dem Redux-Zustand versetzt soll, gibt es einen besseren Weg, um das ‚onaddstream‘ Ereignis zu reagieren und die Reaktion Komponente ohne setzt den Strom in der Aktualisierung erhalten Redux-Zustand?

+5

Ähnlich - wo in der App-Struktur Sie nicht serialisierbare Zustand Objekte, wie Instanzen von 'RTCPeerConnection' oder' MediaStream', wenn nicht in einem Redux-Speicher? – ruffrey

Antwort

6

Nach meiner Erfahrung sind Dinge wie Socket-Verbindungen und, wie in Ihrem Fall, webrc Dinge, gut geeignet für das Leben in ihren eigenen Middlewares handgeschrieben für Ihre Anwendung. Sie können alle Verbindungsverwaltung hier verkabeln, Aktionen für die Kommunikation mit der Benutzeroberfläche auslösen und auf Aktionen warten, die von hier kommen.

Eine andere Lösung wäre, auf redux saga zu schauen, was eine ziemlich gute Option für die Handhabung komplexer Effekte wie Sockets und webrtc zu sein scheint.

+0

Könnten Sie näher erläutern, wie die Verwendung von 'redux-saga' helfen würde? Ich suche ein ähnliches Problem zu lösen und postete dort ein Problem: https://github.com/yelouafi/redux-saga/issues/635 – Tauren

+1

@Tauren die Hauptidee hier ist, Socket/WebRTC Verbindung bei Sagas Code einzurichten und Push-Updates durch Aktionen, die später mit Reduzierern und schließlich Komponenten behandelt werden. Was Ihre Aufgabe anbelangt, habe ich keine Erfahrung mit Video-Streaming und WebRTC, also konnte ich dazu nichts sagen. –

+1

FYI, '' redux-observable''' wäre eine gute Alternative zur Saga, wenn man beobachtbare Annäherung anstelle von Generatoren bevorzugen würde. https://redux-observable.js.org/ – JacopKane

Verwandte Themen