add default STUN and TURN servers

This commit is contained in:
hzrd149 2024-07-23 08:49:01 -05:00
parent 11c0ac2ca6
commit 8827c018b5
4 changed files with 44 additions and 6 deletions

View File

@ -18,6 +18,7 @@ export default class NostrWebRtcBroker extends EventEmitter<EventMap> {
signer: Signer;
pool: Pool;
defaultRelays: string[];
iceServers: RTCIceServer[] = [];
peers = new Map<string, NostrWebRTCPeer>();
signers = new Map<string, Signer>();
@ -53,7 +54,12 @@ export default class NostrWebRtcBroker extends EventEmitter<EventMap> {
if (relays.length > 0) this.relays.set(pubkey, relays);
else this.relays.set(pubkey, this.defaultRelays);
const peer = new NostrWebRTCPeer(signer, this.pool, relays.length > 0 ? relays : this.defaultRelays);
const peer = new NostrWebRTCPeer(
signer,
this.pool,
relays.length > 0 ? relays : this.defaultRelays,
this.iceServers,
);
this.peers.set(pubkey, peer);
await peer.makeCall(pubkey);

View File

@ -12,3 +12,17 @@ export const COMMON_CONTACT_RELAY = safeRelayUrl("wss://purplepag.es") as string
export const COMMON_CONTACT_RELAYS = [COMMON_CONTACT_RELAY];
export const DEFAULT_SIGNAL_RELAYS = safeRelayUrls(["wss://nostrue.com/", "wss://relay.damus.io"]);
export const DEFAULT_ICE_SERVERS: RTCIceServer[] = [
{
urls: ["stun:freeturn.net:3479"],
},
{
urls: ["turn:freeturn.net:3479"],
username: "free",
credential: "free",
},
{
urls: ["stun:stun.l.google.com:19302"],
},
];

View File

@ -10,6 +10,7 @@ import SimpleSigner from "../classes/simple-signer";
import { localRelay } from "./local-relay";
import localSettings from "./local-settings";
import NostrWebRTCPeer from "../classes/nostr-webrtc-peer";
import { DEFAULT_ICE_SERVERS } from "../const";
class WebRtcRelaysService {
log = logger.extend("NostrWebRtcBroker");
@ -126,11 +127,10 @@ class WebRtcRelaysService {
}
const signer = new SimpleSigner(localSettings.webRtcLocalIdentity.value);
const broker = new NostrWebRtcBroker(signer, new SimplePool(), ["wss://nos.lol", "wss://nostrue.com"]);
broker.iceServers = DEFAULT_ICE_SERVERS;
const webRtcRelaysService = new WebRtcRelaysService(
new NostrWebRtcBroker(signer, new SimplePool(), ["wss://nos.lol", "wss://nostrue.com"]),
localRelay as AbstractRelay | null,
);
const webRtcRelaysService = new WebRtcRelaysService(broker, localRelay as AbstractRelay | null);
webRtcRelaysService.start();

View File

@ -1,5 +1,16 @@
import { useEffect } from "react";
import { Alert, AlertIcon, Button, Flex, Heading, Input, Text, useForceUpdate, useInterval } from "@chakra-ui/react";
import {
Alert,
AlertIcon,
Button,
CloseButton,
Flex,
Heading,
Input,
Text,
useForceUpdate,
useInterval,
} from "@chakra-ui/react";
import { useForm } from "react-hook-form";
import BackButton from "../../../components/router/back-button";
@ -78,6 +89,13 @@ export default function WebRtcConnectView() {
>
Connect
</Button>
<CloseButton
onClick={() =>
localSettings.webRtcRecentConnections.next(
localSettings.webRtcRecentConnections.value.filter((u) => u !== uri),
)
}
/>
</Flex>
))}
</>