mirror of
https://github.com/cerc-io/watcher-ts
synced 2026-04-27 12:24:06 +00:00
Pass signaling server URL when running a relay node
This commit is contained in:
parent
fe781fb8f4
commit
ebfa34cda5
@ -17,7 +17,7 @@ A basic CLI to pass messages between peers using `stdin`/`stdout`
|
||||
yarn build
|
||||
```
|
||||
|
||||
* Run a local signalling server (skip if an already running signalling server is available):
|
||||
* (Optional) Run a local signalling server:
|
||||
|
||||
```bash
|
||||
# In packages/peer
|
||||
@ -28,9 +28,11 @@ A basic CLI to pass messages between peers using `stdin`/`stdout`
|
||||
|
||||
```bash
|
||||
# In packages/peer
|
||||
yarn relay-node
|
||||
yarn relay-node --signal-server [SIGNAL_SERVER_URL]
|
||||
```
|
||||
|
||||
* `signal-server`: multiaddr of a signalling server (default: local signalling server multiaddr)
|
||||
|
||||
* Start the node:
|
||||
|
||||
```bash
|
||||
|
||||
@ -13,7 +13,7 @@ interface Arguments {
|
||||
async function main (): Promise<void> {
|
||||
const argv: Arguments = _getArgv();
|
||||
if (!argv.signalServer) {
|
||||
console.log('Using default signalling server URL');
|
||||
console.log('Using the default signalling server URL');
|
||||
}
|
||||
|
||||
const peer = new Peer(true);
|
||||
|
||||
@ -1 +1,2 @@
|
||||
REACT_APP_SIGNAL_SERVER=/ip4/127.0.0.1/tcp/13579/ws/p2p-webrtc-star/
|
||||
REACT_APP_RELAY_NODE=
|
||||
|
||||
@ -4,13 +4,13 @@ This project was bootstrapped with [Create React App](https://github.com/faceboo
|
||||
|
||||
## Instructions
|
||||
|
||||
* Install dependencies
|
||||
|
||||
* Install dependencies:
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
* Build the peer package
|
||||
* Build the peer package:
|
||||
|
||||
```bash
|
||||
# From repo root
|
||||
@ -19,14 +19,30 @@ This project was bootstrapped with [Create React App](https://github.com/faceboo
|
||||
yarn build
|
||||
```
|
||||
|
||||
* Run the signalling server
|
||||
* (Optional) Run a local signalling server:
|
||||
|
||||
```bash
|
||||
# In packages/peer
|
||||
yarn signal-server
|
||||
```
|
||||
|
||||
* Start the react app in development mode
|
||||
* (Optional) Run a local relay node:
|
||||
|
||||
```bash
|
||||
# In packages/peer
|
||||
yarn relay-node --signal-server [SIGNAL_SERVER_URL]
|
||||
```
|
||||
|
||||
* `signal-server`: multiaddr of a signalling server (default: local signalling server multiaddr)
|
||||
|
||||
* Set the signalling server and relay node multiaddrs in the [env](./.env) file:
|
||||
|
||||
```
|
||||
REACT_APP_SIGNAL_SERVER=/ip4/127.0.0.1/tcp/13579/ws/p2p-webrtc-star/
|
||||
REACT_APP_RELAY_NODE=/ip4/127.0.0.1/tcp/13579/wss/p2p-webrtc-star/p2p/12D3KooWRzH3ZRFP6RDbs2EKA8jSrD4Y6VYtLnCRMj3mYCiMHCJP
|
||||
```
|
||||
|
||||
* Start the react app in development mode:
|
||||
|
||||
```bash
|
||||
# In packages/peer-test-app
|
||||
|
||||
@ -10,17 +10,17 @@ declare global {
|
||||
|
||||
function App() {
|
||||
const [peer, setPeer] = useState<Peer>()
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
if (peer) {
|
||||
await peer.init(process.env.REACT_APP_SIGNAL_SERVER)
|
||||
await peer.init(process.env.REACT_APP_SIGNAL_SERVER, process.env.REACT_APP_RELAY_NODE)
|
||||
console.log(`Peer ID is ${peer.peerId!.toString()}`);
|
||||
|
||||
peer.subscribeMessage((peerId, message) => {
|
||||
console.log(`${peerId.toString()} > ${message}`)
|
||||
})
|
||||
|
||||
|
||||
window.broadcast = (message: string) => {
|
||||
peer.broadcastMessage(message)
|
||||
}
|
||||
|
||||
@ -16,5 +16,6 @@
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
"@typescript-eslint/no-explicit-any": "off"
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ import { mplex } from '@libp2p/mplex';
|
||||
import type { Stream as P2PStream, Connection } from '@libp2p/interface-connection';
|
||||
import type { PeerInfo } from '@libp2p/interface-peer-info';
|
||||
import { PeerId } from '@libp2p/interface-peer-id';
|
||||
import { multiaddr } from '@multiformats/multiaddr';
|
||||
import { multiaddr, Multiaddr } from '@multiformats/multiaddr';
|
||||
|
||||
export const PROTOCOL = '/chat/1.0.0';
|
||||
export const DEFAULT_SIGNAL_SERVER_URL = '/ip4/127.0.0.1/tcp/13579/wss/p2p-webrtc-star';
|
||||
@ -107,11 +107,13 @@ export class Peer {
|
||||
// Wait for connection and relay to be bind
|
||||
this._node.peerStore.addEventListener('change:multiaddrs', (evt) => {
|
||||
assert(this._node);
|
||||
const { peerId } = evt.detail;
|
||||
const { peerId, multiaddrs } = evt.detail;
|
||||
|
||||
// Updated self multiaddrs?
|
||||
// Log updated self multiaddrs
|
||||
if (peerId.equals(this._node.peerId)) {
|
||||
console.log('Updated self multiaddrs', this._node.getMultiaddrs().map(addr => addr.toString()));
|
||||
} else {
|
||||
console.log('Updated other node\'s multiaddrs', multiaddrs.map((addr: Multiaddr) => addr.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import { createLibp2p } from 'libp2p';
|
||||
import wrtc from 'wrtc';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
import yargs from 'yargs';
|
||||
|
||||
import { noise } from '@chainsafe/libp2p-noise';
|
||||
import { mplex } from '@libp2p/mplex';
|
||||
@ -7,12 +9,21 @@ import { webRTCStar, WebRTCStarTuple } from '@libp2p/webrtc-star';
|
||||
|
||||
import { DEFAULT_SIGNAL_SERVER_URL } from './index.js';
|
||||
|
||||
interface Arguments {
|
||||
signalServer: string;
|
||||
}
|
||||
|
||||
async function main (): Promise<void> {
|
||||
const argv: Arguments = _getArgv();
|
||||
if (!argv.signalServer) {
|
||||
console.log('Using the default signalling server URL');
|
||||
}
|
||||
|
||||
const wrtcStar: WebRTCStarTuple = webRTCStar({ wrtc });
|
||||
const node = await createLibp2p({
|
||||
addresses: {
|
||||
listen: [
|
||||
DEFAULT_SIGNAL_SERVER_URL
|
||||
argv.signalServer || DEFAULT_SIGNAL_SERVER_URL
|
||||
]
|
||||
},
|
||||
transports: [
|
||||
@ -36,6 +47,21 @@ async function main (): Promise<void> {
|
||||
node.getMultiaddrs().forEach((ma) => console.log(ma.toString()));
|
||||
}
|
||||
|
||||
function _getArgv (): any {
|
||||
return yargs(hideBin(process.argv)).parserConfiguration({
|
||||
'parse-numbers': false
|
||||
}).options({
|
||||
signalServer: {
|
||||
type: 'string',
|
||||
describe: 'Signalling server URL'
|
||||
},
|
||||
relayNode: {
|
||||
type: 'string',
|
||||
describe: 'Relay node URL'
|
||||
}
|
||||
}).argv;
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user