Add loopback support to puter.peer (#3425)

* allow setting port instead of invite code in puter.peer

* fix grabbing fallbackice under wrong response
This commit is contained in:
velzie
2026-07-22 20:13:35 -04:00
committed by GitHub
parent 51541d3739
commit ebcc4bb597
+9 -7
View File
@@ -54,7 +54,7 @@ class PuterPeerServer extends EventTarget {
this.#wsconn = new WebSocket(peerConfig.signallerUrl);
}
async start () {
async start(options = {}) {
await new Promise((resolve, reject) => {
this.#wsconn.onopen = resolve;
this.#wsconn.onerror = reject;
@@ -77,6 +77,7 @@ class PuterPeerServer extends EventTarget {
server: {
create: {
authToken: this.#peerConfig.authToken,
port: options.port,
},
},
}),
@@ -223,7 +224,7 @@ class PuterPeerConnection extends EventTarget {
}
}
async connect (invitecode) {
async connect(invitecode, options = {}) {
this.#wsconn = new WebSocket(this.#peerConfig.signallerUrl);
await new Promise((resolve, reject) => {
this.#wsconn.onopen = resolve;
@@ -245,6 +246,7 @@ class PuterPeerConnection extends EventTarget {
connect: {
authToken: this.#peerConfig.authToken,
invitecode,
port: options.port,
},
},
}),
@@ -404,8 +406,7 @@ class Peer {
return;
}
const { iceServers, ttl, fallbackIce } = await response.json();
this.#fallbackIceServers = fallbackIce;
const { iceServers, ttl } = await response.json();
this.#turnServers = iceServers;
this.#turnTTL = ttl;
this.#turnStartedAt = Date.now();
@@ -417,7 +418,8 @@ class Peer {
if ( ! response.ok ) {
throw new Error('Failed to get signaller info from Puter.');
}
const { url } = await response.json();
const { url, fallbackIce } = await response.json();
this.#fallbackIceServers = fallbackIce;
this.#signallerUrl = url;
}
@@ -456,7 +458,7 @@ class Peer {
await this.#authenticateForPeerAction('create a server');
const peerConfig = await this.#resolvePeerConfig(options);
const server = new PuterPeerServer(peerConfig);
await server.start();
await server.start(options);
return server;
}
@@ -464,7 +466,7 @@ class Peer {
await this.#authenticateForPeerAction('connect to a server');
const peerConfig = await this.#resolvePeerConfig(options);
const conn = new PuterPeerConnection(peerConfig);
await conn.connect(invitecode);
await conn.connect(invitecode, options);
return conn;
}
}