2012-11-15 26 views
5

Tôi đang thiết lập kết nối WebRTC trên Chrome 23. Để đính kèm luồng địa phương, bạn cần cho phép trình duyệt sử dụng máy ảnh và micrô. Về phía người gọi, tôi sẽ kiểm tra xem luồng địa phương có thể nhận được không và tôi không gửi phiếu mua hàng cho đến thời điểm này. Sau đó, phiếu mua hàng được gửi và trình duyệt ngay lập tức bắt đầu gửi các ứng cử viên ICE.Lỗi khi nhận được Ứng viên ICE trước khi câu trả lời được gửi

Sau đó, nếu trình duyệt từ xa không nhận được luồng phương tiện cục bộ thì tôi nhận được SYNTAX_ERR: DOM Exception 12 trên peerConnection.addIceCandidate(candidate) cho mỗi ứng cử viên ICE nhận được.

Tôi đã kiểm tra documentation trên addIceCandidate nhưng không có thông tin về điều kiện tiên quyết.

Tôi nghĩ rằng tôi có thể trì hoãn việc gửi ứng cử viên ICE từ người cung cấp bằng cách trì hoãn và chờ tín hiệu rằng khách hàng từ xa đã thêm luồng cục bộ, nhưng đây là giao tiếp bổ sung cần thiết và không có vẻ đúng.

Tôi có thể thêm các ứng cử viên ICE từ xa vào webkitRTCPeerConnection trước khi câu trả lời được gửi và luồng phương tiện cục bộ được đính kèm không?

+0

Đối với điểm kết thúc thứ nhất, tôi kiểm tra các ứng viên ICE từ xa sau khi tạo phiếu mua hàng (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L408) và cho điểm kết thúc thứ 2, tôi kiểm tra các ứng cử viên ICE từ xa khi người thứ hai biết rằng bạn bè thứ nhất sắp gửi cho anh ta đề nghị trong vài giây! (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L229) –

+0

Cảm ơn ví dụ của bạn :). Vấn đề của tôi bây giờ là khác nhau mặc dù. Sau khi thiết lập 'remoteDescription' tôi có thể nhận được các ứng cử viên ICE tốt. Nhưng khi tôi trì hoãn cho phép truy cập phương tiện truyền thông sau khi tất cả các ứng viên ICE được nhận thì không có ứng cử viên nào được gửi từ phía người nhận. Bạn đã xử lý việc này bằng cách buộc người dùng cho phép truy cập phương tiện trước khi vào phòng. Nó không phải là một lựa chọn cho tôi mặc dù. – Episodex

Trả lời

6

Sau khi tôi viết câu hỏi này, tôi không cần phải đính kèm luồng địa phương trước khi nhận ứng viên ICE, nhưng cần đặt remoteDescription (tại thời điểm nhận phiếu mua hàng). Trong mã của tôi, tôi đã chờ thiết lập remoteDescription và gửi câu trả lời cho đến khi trình duyệt nhận luồng địa phương.

+0

Xin chào @Episodex, bạn đã làm gì để chờ thiết lập remoteDescription? Cảm ơn rất nhiều! –

+1

@GuillaumeCisco Theo như tôi nhớ tôi chỉ đặt khoảng thời gian 1 giây và chờ đợi, nhưng nó đã sai! Nếu bạn có cùng một vấn đề như tôi thì chỉ cần đặt 'remoteDescription' trước khi bạn có quyền truy cập vào máy ảnh. Bằng cách này, trình duyệt sẽ xử lý các ứng viên ICE và thiết lập kết nối. Sau đó, khi các dòng video có sẵn trình duyệt (hoặc mã của bạn - tôi không nhớ bây giờ) sẽ gửi mô tả địa phương mới cho các peer và video sẽ đi qua. Nhưng nó đã được hơn hai năm trước đây, rất nhiều có thể đã thay đổi kể từ đó (hy vọng cho tốt hơn). – Episodex

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