From 85398249fdde76f7f32c476f810ff7d230f9d1a4 Mon Sep 17 00:00:00 2001 From: Ladd Date: Sun, 22 Dec 2024 17:30:41 -0600 Subject: [PATCH] README --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++- src/README.md | 24 ------------------------ src/config.ts | 15 +++++++++------ 3 files changed, 60 insertions(+), 31 deletions(-) delete mode 100644 src/README.md diff --git a/README.md b/README.md index e151161..a7f723e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,52 @@ -# rhizome +## Setup +Install nodejs +Install [nvm](https://nvm.sh) + +## Install + +```bash +nvm install +npm install +``` + +## Build + +```bash +npx tsc +# npm run build # also works + +# npx tsc --watch # is useful during development +``` + +## Run + +To demonstrate the example application, you can open multiple terminals. In each terminal execute something like the following. + + export RHIZOME_REQUEST_BIND_PORT=4000 + export RHIZOME_PUBLISH_BIND_PORT=4001 + export RHIZOME_SEED_PEERS='127.0.0.1:4002, 127.0.0.1:4004' + export RHIZOME_HTTP_API_PORT=3000 + export RHIZOME_PEER_ID=peer1 + node dist/example-app.js + + export RHIZOME_REQUEST_BIND_PORT=4002 + export RHIZOME_PUBLISH_BIND_PORT=4003 + export RHIZOME_SEED_PEERS='127.0.0.1:4000, 127.0.0.1:4004' + export RHIZOME_PEER_ID=peer2 + node dist/example-app.js + + export RHIZOME_REQUEST_BIND_PORT=4004 + export RHIZOME_PUBLISH_BIND_PORT=4005 + export RHIZOME_SEED_PEERS='127.0.0.1:4000, 127.0.0.1:4002' + export RHIZOME_PEER_ID=peer3 + node dist/example-app.js + +In a separate terminal, you can use `curl` to interact with an instance. + +`jq` is helpful for formatting the json responses. + + curl -s http://localhost:3000/peers/count | jq + curl -s http://localhost:3000/peers | jq + curl -s http://localhost:3000/deltas/count | jq + curl -s http://localhost:3000/deltas | jq diff --git a/src/README.md b/src/README.md deleted file mode 100644 index 702c807..0000000 --- a/src/README.md +++ /dev/null @@ -1,24 +0,0 @@ -To install - - npm install - -To build - - npx tsc - -To demonstrate the example application, you can open multiple terminals. In each terminal execute something like the following. - - export REQUEST_BIND_PORT=4000 - export PUBLISH_BIND_PORT=4001 - export SEED_PEERS='127.0.0.1:4002, 127.0.0.1:4004' - node dist/example-app.js - - export REQUEST_BIND_PORT=4002 - export PUBLISH_BIND_PORT=4003 - export SEED_PEERS='127.0.0.1:4000, 127.0.0.1:4004' - node dist/example-app.js - - export REQUEST_BIND_PORT=4004 - export PUBLISH_BIND_PORT=4005 - export SEED_PEERS='127.0.0.1:4000, 127.0.0.1:4002' - node dist/example-app.js diff --git a/src/config.ts b/src/config.ts index ee9f7ff..1821528 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,18 +1,21 @@ import {randomUUID} from "crypto"; import {PeerAddress} from "./types"; +// _HOST refers to the address from an external perspective +// _ADDR refers to the interface address from the service's perspective + export const LEVEL_DB_DIR = process.env.RHIZOME_LEVEL_DB_DIR ?? './data'; export const CREATOR = process.env.USER!; export const HOST_ID = process.env.RHIZOME_PEER_ID || randomUUID(); -export const ADDRESS = process.env.RHIZOME_ADDRESS ?? '127.0.0.1'; +export const ADDRESS = process.env.RHIZOME_ADDRESS ?? 'localhost'; +export const REQUEST_BIND_ADDR = process.env.RHIZOME_REQUEST_BIND_ADDR || ADDRESS; export const REQUEST_BIND_PORT = parseInt(process.env.RHIZOME_REQUEST_BIND_PORT || '4000'); -export const REQUEST_BIND_ADDR = process.env.RHIZOME_REQUEST_BIND_ADDR || ADDRESS || '127.0.0.1'; -export const REQUEST_BIND_HOST = process.env.RHIZOME_REQUEST_BIND_HOST || REQUEST_BIND_ADDR || '127.0.0.1'; +export const REQUEST_BIND_HOST = process.env.RHIZOME_REQUEST_BIND_HOST || REQUEST_BIND_ADDR; +export const PUBLISH_BIND_ADDR = process.env.RHIZOME_PUBLISH_BIND_ADDR || ADDRESS; export const PUBLISH_BIND_PORT = parseInt(process.env.RHIZOME_PUBLISH_BIND_PORT || '4001'); -export const PUBLISH_BIND_ADDR = process.env.RHIZOME_PUBLISH_BIND_ADDR || ADDRESS || '127.0.0.1'; -export const PUBLISH_BIND_HOST = process.env.RHIZOME_PUBLISH_BIND_HOST || PUBLISH_BIND_ADDR || '127.0.0.1'; -export const HTTP_API_PORT = parseInt(process.env.RHIZOME_HTTP_API_PORT || '3000'); +export const PUBLISH_BIND_HOST = process.env.RHIZOME_PUBLISH_BIND_HOST || PUBLISH_BIND_ADDR; export const HTTP_API_ADDR = process.env.RHIZOME_HTTP_API_ADDR || ADDRESS || '127.0.0.1'; +export const HTTP_API_PORT = parseInt(process.env.RHIZOME_HTTP_API_PORT || '3000'); export const HTTP_API_ENABLE = process.env.RHIZOME_HTTP_API_ENABLE === 'true'; export const SEED_PEERS: PeerAddress[] = (process.env.RHIZOME_SEED_PEERS || '').split(',') .filter(x => !!x)