2014-09-22 30 views
7

Tôi đang sử dụng WebRTC và nhận ra rằng nó không được hỗ trợ trong tất cả các trình duyệt. Tuy nhiên, Chrome và Firefox hỗ trợ nó (trong các phiên bản mới hơn; Tôi đã cài đặt các phiên bản mới nhất) miễn là bạn có tiền tố chính xác cho các biến nhất định. Ví dụ, tôi có sau đây cho PeerConnection hỗ trợ cross-browser:Chỉ định cấu hình RTC không đúng định dạng trong Chrome

var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; 

Bây giờ nó cần được hỗ trợ qua trình duyệt, tôi có đoạn mã sau:

var servers = { 
iceservers: [ 
    {url: "stun:23.21.150.121"}, 
    {url: "stun:stun.1.google.com:19302"} 
    ] 
}; 
var pc = PeerConnection(servers); 

Nhưng trong Chrome nó được một lỗi trên dòng cuối cùng (var pc = PeerConnection(servers);). Lỗi này là:

Failed to construct 'RTCPeerConnection': Malformed RTCConfiguration"} 

Rõ ràng, Chrome không thích thông số cấu hình của tôi trong khai báo PeerConnection. Nhưng câu hỏi của tôi là: tại sao tôi nhận được lỗi này và cách chỉ có trong Chrome? (FireFox hoạt động tốt)

Trả lời

6

Vâng, giải pháp thực sự là yên tĩnh đơn giản. Đối tượng servers phải được tạo bằng iceServers trong trường hợp lạc đà. Ngoài ra, bạn đã quên từ khóa new khi tạo kết nối nhưng đó có thể là lỗi đánh máy trong câu hỏi.

Như thế này:

var servers = { 
iceServers: [ 
    {url: "stun:23.21.150.121"}, 
    {url: "stun:stun.1.google.com:19302"} 
    ] 
}; 
var pc = new PeerConnection(servers); 

Cả tất cả các trường hợp thấp hơn và trường hợp lạc đà chỉ làm việc tốt trong FireFox. Vì vậy, thay đổi nó không nên thay đổi cách nó hoạt động ở đó nhưng nó phải là trường hợp lạc đà để nó hoạt động trong Chrome.

+1

Tôi biết nó sẽ là một cái gì đó đơn giản. Sau đó, từ khóa mới chỉ là một lỗi đánh máy trong câu hỏi của tôi như bạn đã tìm. Cảm ơn rất nhiều! – chRyNaN

2

Xem câu trả lời của Ben. JavaScript phân biệt chữ hoa chữ thường và 'iceServers' là chính tả chính xác từ mediacapture spec.

Tôi muốn làm rõ rằng tất cả các trường hợp 'iceservers' thường không thực sự hoạt động trong Firefox, trong đó máy chủ STUN của bạn đang bị bỏ qua. Firefox sử dụng máy chủ STUN mặc định của nó khi nó không nhìn thấy một máy chủ được cung cấp, vì vậy đó là lý do tại sao nó xuất hiện để làm việc, nhưng không sử dụng các máy chủ STUN mà bạn nghĩ.

+0

Theo Mạng phát triển của Mozilla, họ hỗ trợ chữ thường cho máy chủ stun. Hãy xem https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC/WebRTC_basics – chRyNaN

+0

@AndroidStudent Tôi không thấy nó nói ở đâu. Chỉ đề cập đến tôi tìm thấy 'iceservers' có tên 'iceServers' (chữ hoa 'S') [ở đây] (https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC/WebRTC_basics # server). Trong mọi trường hợp, tôi tích cực nó không chấp nhận 'iceservers' toàn bộ chữ thường bởi vì [source] (http://hg.mozilla.org/mozilla-central/annotate/68f76e3c5787/dom/webidl/RTCConfiguration.webidl # l17) nói vậy. – jib

+0

đọc sai câu trả lời của bạn. Hoàn toàn đồng ý. Cảm ơn bạn đã nhập – chRyNaN

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