2015-12-07 19 views
12

Sto costruendo un'applicazione React.js che interagisce con gli apis WebRTC per effettuare chiamate audio/video. Quando viene stabilita una chiamata, viene generato un evento "onaddstream" sull'istanza RTCPeerConnection, che contiene il flusso che io come sviluppatore dovrei connettermi a un elemento video per visualizzare il video remoto all'utente.Dove memorizzare gli stream WebRTC durante la creazione dell'app React con redux

Problema che sto avendo è capire il modo migliore per ottenere il flusso dall'evento al componente React per il rendering. Ce l'ho a lavorare con successo da solo il dumping il getto verso il mio stato redux, ma in this other answer, il creatore di redux Dan Abramov parlato di questo:

[...] non utilizzare le classi all'interno dello Stato. Non sono serializzabili come sono. [...] Usa solo oggetti e matrici semplici.

che lascia che mi domando, se non dovrei mettere questi flussi in stato Redux, c'è un modo migliore per reagire all'evento 'onaddstream' e ottenere la componente Reagire ad aggiornare senza mettere il flusso nella stato di ridondanza?

+5

Analogamente, dove nella struttura dell'app vengono inseriti oggetti di stato non serializzabili, come istanze di 'RTCPeerConnection' o' MediaStream', se non in un negozio Redux? – ruffrey

risposta

6

Nella mia esperienza cose come le connessioni socket e, come nel vostro caso, le cose di webrtc, sono adatte per vivere all'interno del proprio middleware scritto a mano per la vostra applicazione. Puoi collegare qui tutta la gestione delle connessioni, attivare azioni per comunicare con l'interfaccia utente e ascoltare le azioni che arrivano da qui.

Un'altra soluzione potrebbe essere quella di cercare redux saga, che sembra essere piuttosto una buona opzione per la gestione di effetti complessi come socket e webrtc.

+0

Potresti approfondire l'uso di 'redux-saga'? Sto cercando di risolvere un problema simile e ho postato un problema lì: https://github.com/yelouafi/redux-saga/issues/635 – Tauren

+1

@Tauren l'idea principale qui è impostare la connessione socket/webRTC al codice saga e spingere gli aggiornamenti attraverso le azioni da gestire in seguito con i riduttori e, infine, i componenti. Per quanto riguarda il tuo compito dal problema, non ho alcuna esperienza con lo streaming video e webRTC, quindi non ho potuto dire nulla in merito. –

+1

FYI, '' 'redux-observable''' sarebbe una buona alternativa alla saga se preferiresti un approccio osservabile al posto dei generatori. https://redux-observable.js.org/ – JacopKane

Problemi correlati