Create createHost thing.
parent
50e8bd184b
commit
dcbb8b816f
|
|
@ -2,6 +2,58 @@ function errorHandler(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) {
|
||||
const conn = new RTCPeerConnection(peerConnectionConfig);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue