mirror of
https://github.com/cerc-io/watcher-ts
synced 2026-09-12 02:27:31 +00:00
Implement peer package to send messages between peers (#279)
* Initial implementation of class and discoving other peers * Implement peer connection and sending messages between peers * Add react app and use peer package for broadcasting * Maintain stream for each remote peer * Refactor code in peer package * Add serve package for react-app * Add readme for running react app * Add peer package readme * Add logs for events with details * Add a chat CLI using peer package (#280) * Add a flag to instantiate Peer for nodejs * Add a basic chat CLI using peer * Add a signal server arg to chat CLI * Add instructions for chat CLI * Fix typescript and ESM issues after adding peer package (#282) * Fix build issues in util package * Update eslint TS plugins * Scope react app package name * Convert cli package back to CJS and dynamically import ESM * Upgrade ts-node version * Fix tests * Setup a relay node and pubsub based discovery (#284) * Add a script to setup a relay node * Use pubsub based peer discovery * Add peer multiaddr to connection log * Catch relay node dial errors * Increase discovery interval and dial all mutiaddr * Add UI to display self peer ID and multiaddrs * Add UI for displaying live remote connections * Send js objects in peer broadcast messages * Add react-peer package for using peer in react app * Reduce disconnect frequency between peers (#287) * Restrict number of max concurrent dials per peer * Increase hop relay timeout to 1 day * Self review changes * Review changes * Increase pubsub discovery interval and add steps to create a peer id (#290) * Increase pubsub discovery interval * Disable autodial to avoid peer dials without protocol on a reconnect * Add steps to create a peer id and use for relay node * Add back dependency to run signalling server * Avoid bootstrapping and dial to relay node directly Co-authored-by: prathamesh0 <42446521+prathamesh0@users.noreply.github.com> Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
import React from "react";
|
||||
|
||||
export const PeerContext = React.createContext({});
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
import React from 'react';
|
||||
|
||||
import { Peer } from '@cerc-io/peer';
|
||||
|
||||
import { PeerContext } from './PeerContext';
|
||||
|
||||
export const PeerProvider = ({ signalServer, relayNode, children }) => {
|
||||
const [peer, setPeer] = React.useState(null);
|
||||
|
||||
React.useEffect(() => {
|
||||
const init = async () => {
|
||||
const peer = new Peer()
|
||||
await peer.init(signalServer, relayNode);
|
||||
|
||||
// Debug
|
||||
console.log(`Peer ID: ${peer.peerId.toString()}`);
|
||||
|
||||
setPeer(peer);
|
||||
};
|
||||
|
||||
init();
|
||||
|
||||
return () => {
|
||||
if (peer.node) {
|
||||
// TODO: Await for peer close
|
||||
peer.close()
|
||||
}
|
||||
}
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<PeerContext.Provider value={peer}>
|
||||
{children}
|
||||
</PeerContext.Provider>
|
||||
);
|
||||
};
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export { PeerContext } from './context/PeerContext'
|
||||
export { PeerProvider } from './context/PeerProvider'
|
||||
Reference in New Issue
Block a user