add back dev WS transport

This commit is contained in:
CoolElectronics 2023-08-12 16:02:25 -04:00
parent 1613ed38f3
commit 76659f0fa5
No known key found for this signature in database
GPG key ID: F63593D168636C50
18 changed files with 68 additions and 44 deletions

View file

@ -8,20 +8,9 @@ const rtcConf = {
], ],
}; };
enum RequestType {
HttpRequest,
}
type Offer = { offer: any; localCandidates: any }; type Offer = { offer: any; localCandidates: any };
interface RTCOptions {
onconnectionstatechange?: any;
onsignalingstatechange?: any;
oniceconnectionstatechange?: any;
onicegatheringstatechange?: any;
onopen?: any;
onclose?: any;
onmessage?: any;
}
export class RTCTransport extends Transport { export class RTCTransport extends Transport {
peer: RTCPeerConnection; peer: RTCPeerConnection;

View file

@ -1,4 +1,8 @@
<script lang="ts"> <script lang="ts">
import {
registerRemoteListener,
setBareClientImplementation,
} from "bare-client-custom";
import { import {
AdriftBareClient, AdriftBareClient,
Connection, Connection,
@ -7,55 +11,55 @@
} from "client"; } from "client";
// note: even though we import firebase, due to the tree shaking, it will only run if we use "auth" so if ADRIFT_DEV is set it won't import // note: even though we import firebase, due to the tree shaking, it will only run if we use "auth" so if ADRIFT_DEV is set it won't import
import { auth } from "firebase-config"; import { auth } from "firebase-config";
import type { Transport } from "protocol";
import {
registerRemoteListener,
setBareClientImplementation,
} from "bare-client-custom";
import { signInWithEmailAndPassword } from "firebase/auth"; import { signInWithEmailAndPassword } from "firebase/auth";
import { getDatabase, onValue, ref, set } from "firebase/database"; import { getDatabase, onValue, ref, set } from "firebase/database";
import type { Transport } from "protocol";
let transport: Transport; let transport: Transport;
let wstransport: DevWsTransport | undefined;
let rtctransport: RTCTransport | undefined; let rtctransport: RTCTransport | undefined;
if (import.meta.env.VITE_ADRIFT_DEV) { if (import.meta.env.VITE_ADRIFT_DEV) {
console.log( console.log(
"%cADRIFT RUNNING IN DEVELOPMENT MODE", "%cADRIFT RUNNING IN DEVELOPMENT MODE",
"background: blue; color: white; font-size: x-large" "background: blue; color: white; font-size: x-large"
); );
transport = new DevWsTransport(
() => console.log("onopen"),
() => console.log("onclose")
);
} else { } else {
console.log( console.log(
"%cADRIFT RUNNING IN PRODUCTION MODE", "%cADRIFT RUNNING IN PRODUCTION MODE",
"background: blue; color: white; font-size: x-large" "background: blue; color: white; font-size: x-large"
); );
}
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
console.log("registering bare-client-custom");
registerRemoteListener();
}
function onTransportOpen() {
console.log("Transport opened");
let connection = new Connection(transport);
let bare = new AdriftBareClient(connection);
setBareClientImplementation(bare);
}
function createRTCTransport() {
rtctransport = transport = new RTCTransport( rtctransport = transport = new RTCTransport(
console.log, onTransportOpen,
() => { onTransportClose,
// rtc.dataChannel.send("test message");
// let client = new AdriftBareClient;
// setBareClientImplementation(client);
//
},
console.log, console.log,
console.log, console.log,
console.log console.log
); );
} }
let connection = new Connection(transport); function onTransportClose() {
console.warn("Transport closed");
let bare = new AdriftBareClient(connection);
setBareClientImplementation(bare);
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
console.log("registering bare-client-custom");
registerRemoteListener();
} }
async function connectFirebase() { async function connectFirebase() {
if (!rtctransport) return; createRTCTransport();
let creds = await signInWithEmailAndPassword( let creds = await signInWithEmailAndPassword(
auth, auth,
@ -79,14 +83,15 @@
if (data && data.answer && data.candidates) { if (data && data.answer && data.candidates) {
set(peer, null); set(peer, null);
const { answer, candidates } = data; const { answer, candidates } = data;
rtctransport?.answer(answer, candidates); rtctransport.answer(answer, candidates);
} }
} }
}); });
} }
async function connectDevHttp() { async function connectDevHttp() {
let offer = await rtctransport?.createOffer(); createRTCTransport();
let offer = await rtctransport.createOffer();
console.log("offer created", offer); console.log("offer created", offer);
console.log(JSON.stringify(offer)); console.log(JSON.stringify(offer));
@ -99,14 +104,23 @@
throw new Error("connect: " + r.status + " " + r.statusText); throw new Error("connect: " + r.status + " " + r.statusText);
} }
const { answer, candidates } = await r.json(); const { answer, candidates } = await r.json();
await rtctransport?.answer(answer, candidates); await rtctransport.answer(answer, candidates);
}
async function connectDevWS() {
wstransport = transport = new DevWsTransport(onTransportOpen, () =>
console.log("onclose")
);
} }
</script> </script>
<h1> <h1>
{#if !import.meta.env.VITE_ADRIFT_DEV} {#if !import.meta.env.VITE_ADRIFT_DEV}
<button on:click={connectFirebase}>Connect with firebase </button> <button on:click={connectFirebase}>Connect with firebase</button>
{:else} {:else}
<button on:click={connectDevHttp}>Connect with dev HTTP</button> <button on:click={connectDevHttp}
>Connect with dev webrtc (http signaling server)</button
>
<button on:click={connectDevWS}>Connect with dev websocket</button>
{/if} {/if}
</h1> </h1>

13
package-lock.json generated Normal file
View file

@ -0,0 +1,13 @@
{
"name": "adrift",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "adrift",
"version": "1.0.0",
"license": "ISC"
}
}
}

View file

@ -6,7 +6,14 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"workspace": [
"protocol",
"server",
"frontend",
"client",
"firebase-config"
],
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC" "license": "ISC"
} }

3
pnpm-lock.yaml generated
View file

@ -1,4 +1,4 @@
lockfileVersion: '6.0' lockfileVersion: '6.1'
settings: settings:
autoInstallPeers: true autoInstallPeers: true
@ -6762,6 +6762,7 @@ packages:
file:bare-client-custom: file:bare-client-custom:
resolution: {directory: bare-client-custom, type: directory} resolution: {directory: bare-client-custom, type: directory}
name: '@tomphttp/bare-client' name: '@tomphttp/bare-client'
version: 2.2.0-alpha
dependencies: dependencies:
'@types/uuid': 9.0.2 '@types/uuid': 9.0.2
uuid: 9.0.0 uuid: 9.0.0

View file

@ -163,4 +163,4 @@ async function connectFirebase() {
} }
connectFirebase(); connectFirebase();
// app.listen(3000, () => console.log("listening")); app.listen(3000, () => console.log("listening"));