WebRTC-Example/client/peer.js

30 lines
1020 B
JavaScript

function errorHandler(error) {
console.log(error);
}
export function createPeer(peerExchange, peerConnectionConfig) {
const conn = new RTCPeerConnection(peerConnectionConfig);
peerExchange.listen(createPeerExchangeMessageHandler(conn));
return conn;
}
function createPeerExchangeMessageHandler(conn) {
return function gotMessageFromServer(signal, send) {
if(signal.sdp) {
conn.setRemoteDescription(new RTCSessionDescription(signal.sdp)).then(function() {
// Only create answers in response to offers
if(signal.sdp.type == 'offer') {
conn.createAnswer()
.then(desc => {
conn.setLocalDescription(desc);
send({'sdp': desc})
}).catch(errorHandler);
}
}).catch(errorHandler);
} else if(signal.ice) {
conn.addIceCandidate(new RTCIceCandidate(signal.ice)).catch(errorHandler);
}
};
}