2017-12-10 102 views
9

Im sử dụng ejabberd + stanza io để xây dựng trang web nhắn tin và gọi điện thoại thời gian thực. ive được quản lý để làm cho âm thanh cuộc gọi đầu tiên của tôiWebrtc: Không thể xử lý câu trả lời của WebRTC

from chrome(on PC) -> chrome(on mac) with no errors 

vấn đề xảy ra khi tôi cố gắng để thực hiện cuộc gọi

from chrome(on mac) to firefox(on pc) or vice versa 

nhật ký trình duyệt chrome đang hiển thị Could not process WebRTC answer

bằng cách sử dụng trình gỡ lỗi chrome://webrtc-internals công cụ ive đã phát hiện ra rằng setremotedescription không thành công với lỗi:

`Failed to set remote answer sdp: Called with SDP without ice-ufrag and ice-pwd` 

đây là những gì im sử dụng để bắt đầu cuộc gọi:

var session = client.jingle.createMediaSession('full JID'); 
    session.addStream(localAudio_stream); // getUserMedia stream 
    session.start(); 

những gì tôi làm sai? cách firefox có thể thiết lập thành công một cuộc gọi nhưng không thể chrome (thử nghiệm trên opera đến với kết quả tương tự (thất bại))

Full JS code

Trả lời

4

tôi đã giải quyết vấn đề bằng cách bao gồm các sdpparser gói NPM trong client.js (của stanza.io) sau đó xây dựng nó một lần nữa, và trong stanza.io.bundle ive tinh chỉnh các PeerConnection.prototype.handleAnswer như vậy:

var sdp = client.SdpParser.parse(answer.sdp); 
sdp.media.forEach(function(media){ 
    if(media.type === 'video' && media.inactive) { 
    delete media.fingerprint; 
    media.port = 0; 
    } 
}); 
answer.sdp = client.SdpParser.format(sdp); 

này có thể không phải là cách tốt nhất để làm điều đó, nhưng nó chắc chắn giải quyết vấn đề.

github link of the tweaked stanza.io

Helpful github issue on jingle.js repo