diff options
| author | Melonai <einebeere@gmail.com> | 2021-06-05 17:50:09 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2021-06-05 17:50:09 +0200 |
| commit | 30487265282a16cd5f711e6d10bf7c9e7fd0f12b (patch) | |
| tree | 56cbeb1d020b28ec2783b97aa404270f4768112a /assets/src | |
| parent | c575119a90a028dd109434a4b8889adceac3df93 (diff) | |
| download | rook-30487265282a16cd5f711e6d10bf7c9e7fd0f12b.tar.zst rook-30487265282a16cd5f711e6d10bf7c9e7fd0f12b.zip | |
WebRTC connection between share and request works
Diffstat (limited to 'assets/src')
| -rw-r--r-- | assets/src/network/transfer/transfer.ts | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/assets/src/network/transfer/transfer.ts b/assets/src/network/transfer/transfer.ts index 1cc029b..25511d5 100644 --- a/assets/src/network/transfer/transfer.ts +++ b/assets/src/network/transfer/transfer.ts @@ -1,4 +1,4 @@ -import { onWithToken, send } from "../channel/connection"; +import { on, onWithToken, send } from "../channel/connection"; import type { UnregisterHandler } from "../channel/messages/handler"; import type { ShareAcceptedMessage, @@ -76,9 +76,17 @@ export async function answer( } }; + const unregisterIce = on( + "ice_candidate", + (message: RequestIceCandidateMessage) => + onIncomingIceCandidate(transfer, message) + ); + + unregisterIceOnComplete(transfer, unregisterIce); + send("accept_share", { - sdp: offer.sdp, - type: offer.type, + sdp: answer.sdp, + type: answer.type, }); return transfer; @@ -91,7 +99,7 @@ function createTransfer(type: TransferType): Transfer { id: 0, }); - channel.onopen = e => console.log("ooooyeeee"); + // TODO: Send data after channel was opened. return { pc, @@ -106,7 +114,9 @@ function onShareAccepted( unregister: UnregisterHandler ) { const token = message.token; - transfer.pc.setRemoteDescription(message); + + const answerDescription = new RTCSessionDescription(message); + transfer.pc.setRemoteDescription(answerDescription); const unregisterIce = onWithToken( "ice_candidate", @@ -115,13 +125,7 @@ function onShareAccepted( onIncomingIceCandidate(transfer, message) ); - transfer.pc.onicegatheringstatechange = event => { - const connection = event.target as any; - console.log(connection.iceGatheringState); - if (connection.iceGatheringState === "complete") { - unregisterIce(); - } - }; + unregisterIceOnComplete(transfer, unregisterIce); unregister(); } @@ -132,3 +136,15 @@ function onIncomingIceCandidate( ) { transfer.pc.addIceCandidate(message.candidate); } + +function unregisterIceOnComplete( + transfer: Transfer, + unregister: UnregisterHandler +) { + transfer.pc.onicegatheringstatechange = event => { + const connection = event.target as any; + if (connection.iceGatheringState === "complete") { + unregister(); + } + }; +} |
