mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-13 06:10:01 -04:00
add back dev WS transport
This commit is contained in:
parent
1613ed38f3
commit
76659f0fa5
18 changed files with 68 additions and 44 deletions
|
@ -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;
|
||||||
|
|
|
@ -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
13
package-lock.json
generated
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "adrift",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "adrift",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
3
pnpm-lock.yaml
generated
|
@ -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
|
||||||
|
|
|
@ -163,4 +163,4 @@ async function connectFirebase() {
|
||||||
}
|
}
|
||||||
connectFirebase();
|
connectFirebase();
|
||||||
|
|
||||||
// app.listen(3000, () => console.log("listening"));
|
app.listen(3000, () => console.log("listening"));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue