2015-12-07 19 views
12

Tôi đang xây dựng ứng dụng React.js tương tác với apis WebRTC để thực hiện cuộc gọi âm thanh/video. Khi cuộc gọi được thiết lập thành công, sự kiện 'onaddstream' được kích hoạt trên phiên bản RTCPeerConnection, trong đó chứa luồng mà tôi là nhà phát triển có nghĩa vụ kết nối với phần tử video để hiển thị video từ xa cho người dùng.Nơi lưu trữ các luồng WebRTC khi xây dựng ứng dụng React với redux

Vấn đề tôi đang gặp là hiểu cách tốt nhất để đưa luồng từ sự kiện này đến thành phần React để hiển thị. Tôi có nó làm việc thành công bằng cách chỉ bán phá giá các dòng vào trạng thái Redux của tôi, nhưng in this other answer, tác giả của Redux Dan Abramov nói này:

[...] không sử dụng lớp bên trong nhà nước. Chúng không thể tuần tự hóa được. [...] Chỉ cần sử dụng các đối tượng đơn giản và mảng.

Điều này khiến tôi tự hỏi, nếu tôi không đặt những luồng này trong trạng thái chuyển đổi, có cách nào tốt hơn để phản ứng với sự kiện 'onaddstream' và nhận thành phần React cập nhật mà không đưa luồng vào trạng thái redux?

+5

Tương tự - ở đâu trong cấu trúc ứng dụng, bạn có đặt các đối tượng trạng thái không tuần tự hóa, chẳng hạn như các trường hợp 'RTCPeerConnection' hoặc' MediaStream', nếu không có trong kho lưu trữ Redux không? – ruffrey

Trả lời

6

Trong kinh nghiệm của tôi những thứ như kết nối ổ cắm và, như trong trường hợp của bạn, điều webrtc, rất phù hợp để sống bên trong phần mềm trung gian của chính họ được viết tay cho ứng dụng của bạn. Bạn có thể kết nối tất cả quản lý kết nối tại đây, thực hiện các thao tác để giao tiếp với giao diện người dùng và lắng nghe các hành động đến từ đây.

Một giải pháp khác là xem redux saga, đây có vẻ là một lựa chọn khá tốt để xử lý các hiệu ứng phức tạp như ổ cắm và webrtc.

+0

Bạn có thể giải thích cách sử dụng 'redux-saga' sẽ giúp ích gì không? Tôi đang tìm cách giải quyết vấn đề tương tự và đăng sự cố ở đó: https://github.com/yelouafi/redux-saga/issues/635 – Tauren

+1

@Tauren ý tưởng chính ở đây là thiết lập kết nối socket/webRTC tại mã của saga và đẩy các cập nhật thông qua các hành động để được xử lý sau đó với bộ giảm tốc và cuối cùng là các thành phần. Đối với nhiệm vụ của bạn từ vấn đề này, tôi không có bất kỳ kinh nghiệm với video streaming và webRTC, vì vậy không thể nói bất cứ điều gì về vấn đề này. –

+1

FYI, '' 'redux-observable''' sẽ là một lựa chọn tốt cho saga nếu bạn thích phương pháp quan sát thay vì máy phát điện. https://redux-observable.js.org/ – JacopKane

Các vấn đề liên quan