[英]simple-peer webrtc error when trying to share screen
我正在使用 simple-peer 構建一個視頻聊天應用程序,用戶也可以在其中共享屏幕。 應用程序的流程是這樣的,當用戶 A 創建房間時,他可以抓取頁面 url 並與用戶 B 共享。當用戶 B 加入時,會為他創建一個發起者對等體,如圖所示。
function createPeer(partnerID, callerID, stream) {
const peer = new Peer({
initiator: true,
trickle: false,
stream,
});
peer.on("signal", signal => {
const payload = {
partnerID,
callerID,
signal
}
socketRef.current.emit("call partner", payload);
});
peer.on("stream", handleStream);
return peer;
}
當用戶 A 從用戶 B 獲得報價時,會為他創建一個非發起者對等點,如此處所示。
function addPeer(incomingSignal, callerID, stream) {
const peer = new Peer({
initiator: false,
trickle: false,
stream,
});
peer.on("signal", signal => {
const payload = {
callerID,
signal
}
socketRef.current.emit("accept call", payload);
});
peer.on("stream", handleStream);
peer.signal(incomingSignal);
return peer;
}
現在,當任何用戶決定共享他們的屏幕時,這個 function 就會被調用。
function shareScreen() {
navigator.mediaDevices.getDisplayMedia().then(stream => {
const track = stream.getTracks()[0];
peerRef.current.removeStream(videoStream.current);
peerRef.current.addStream(stream);
userVideoRef.current.srcObject = stream;
track.onended = function () {
userVideoRef.current.srcObject = videoStream.current;
peerRef.current.removeTrack(track, stream);
};
});
}
我得到的行為真正奇怪的是,當用戶 B,即調用方,想要共享他的屏幕時,一切正常,但是當用戶 A,被調用方,想要共享他的屏幕時,我得到以下錯誤。
index.js:17 未捕獲的錯誤:[object RTCErrorEvent] at makeError (index.js:17) at RTCDataChannel._channel.onerror (index.js:490)
我不確定我哪里出錯了。
經過一番測試,我發現了錯誤的來源。
您需要做的是在調用 function addPeer() 之后調用 function peer.signal(incomingSignal)
addPeer()
從addPeer()
返回的peer
變量 ZC1C425Z0741A68384F14
這是一個例子:
function addPeer(incomingSignal, callerID, stream) {
const peer = new Peer({
initiator: false,
trickle: false,
stream,
});
peer.on("signal", signal => {
const payload = {
callerID,
signal
}
socketRef.current.emit("accept call", payload);
});
peer.on("stream", handleStream);
// peer.signal(incomingSignal);
return peer;
}
let peer = addPeer(incomingSignal, callerId, stream);
peer.signal(incomingSignal);
它會正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.