2015-12-07 19 views
12

我正在構建與WebRTC apis交互以進行音頻/視頻呼叫的React.js應用程序。當呼叫成功建立後,會在RTCPeerConnection實例上觸發'onaddstream'事件,其中包含作爲開發人員應連接到視頻元素以向用戶顯示遠程視頻的流。在使用redux構建React應用程序時,在哪裏存儲WebRTC流

問題我在理解的是從事件流到React組件進行渲染的最佳方式。我有它成功只是傾銷流進我的終極版狀態工作,但in this other answer,終極版丹阿布拉莫夫的創造者提到了這一點:

[...]不使用狀態中的類。它們是不可序列化的。 [...]只需使用普通對象和數組。

這讓我想知道,如果我不應該把這些數據流的終極版狀態,有沒有更好的方式來作出反應,「onaddstream」事件,並獲得陣營組件,而不把流中的更新還原狀態?

+5

同樣 - 在應用程序結構中,如果不是在Redux存儲中,那麼您會將不可序列化的狀態對象放置在「RTCPeerConnection」或「MediaStream」的實例中? – ruffrey

回答

6

根據我的經驗,套接字連接和webrtc的東西都非常適合您的應用程序自己的中間件。您可以在這裏連接所有連接管理,激發與用戶界面進行通信的操作並監聽來自此處的操作。

另一種解決方案是查看redux saga,這對於處理複雜效果如套接字和webrtc似乎是一個不錯的選擇。

+0

您能否詳細說明如何使用'redux-saga'幫助?我正在尋求解決類似的問題,並在那裏發佈了一個問題:https://github.com/yelouafi/redux-saga/issues/635 – Tauren

+1

@Tauren這裏的主要想法是在saga的代碼中設置socket/webRTC連接並通過行動推動更新,以便隨後使用reducer和最終組件處理。至於你從這個問題的任務,我沒有任何關於視頻流和webRTC的經驗,所以在這個問題上什麼都不能說。 –

+1

僅供參考,如果你更喜歡可觀察的方法而不是發電機,'''''''''''''''''''''''''''''''''''''''' https://redux-observable.js.org/ – JacopKane

相關問題