Create createHost thing.
parent
50e8bd184b
commit
dcbb8b816f
|
|
@ -2,6 +2,58 @@ function errorHandler(error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createHost(peerExchange, peerConnectionConfig) {
|
||||||
|
const listeners = new Set();
|
||||||
|
|
||||||
|
function onConnection(callback) {
|
||||||
|
listeners.push(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function emitConnection(conn) {
|
||||||
|
listeners.forEach(callback => callback(conn));
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleSDP(sdp) {
|
||||||
|
host.setRemoteDescription(new RTCSessionDescription(signal.sdp));
|
||||||
|
}
|
||||||
|
|
||||||
|
peerExchange.listen(async (signal, send) => {
|
||||||
|
if (signal.sdp && signal.sdp.type === "offer") {
|
||||||
|
const host = createConn(peerExchange, peerConnectionConfig);
|
||||||
|
|
||||||
|
const remoteDesc = new RTCSessionDescription(signal.sdp);
|
||||||
|
await host.setRemoteDescription(remoteDesc);
|
||||||
|
|
||||||
|
const localDesc = await conn.createAnswer();
|
||||||
|
await host.setLocalDescription(localDesc);
|
||||||
|
|
||||||
|
send({'sdp': desc});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
onConnection,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createConn(peerExchange, peerConnectionConfig) {
|
||||||
|
const conn = new RTCPeerConnection(peerConnectionConfig);
|
||||||
|
|
||||||
|
conn.addEventListener('icecandidate', event => {
|
||||||
|
if(event.candidate != null) {
|
||||||
|
peerExchange.send({ice: event.candidate});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
peerExchange.listen(signal => {
|
||||||
|
if(signal.ice) {
|
||||||
|
conn.addIceCandidate(new RTCIceCandidate(signal.ice)).catch(errorHandler);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
|
||||||
export function createPeer(peerExchange, peerConnectionConfig) {
|
export function createPeer(peerExchange, peerConnectionConfig) {
|
||||||
const conn = new RTCPeerConnection(peerConnectionConfig);
|
const conn = new RTCPeerConnection(peerConnectionConfig);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue