159
server/README.md
Archivo normal
159
server/README.md
Archivo normal
@@ -0,0 +1,159 @@
|
||||
# RingNet Dashboard Server
|
||||
|
||||
A REST API and web dashboard for monitoring RingNet network topology, nodes, and connections in real-time.
|
||||
|
||||
## Features
|
||||
|
||||
### 🚀 REST API
|
||||
- **GET /api/nodes** - List all registered nodes
|
||||
- **GET /api/nodes/:nodeId** - Get specific node details
|
||||
- **GET /api/nodes/:nodeId/connections** - Get node connections
|
||||
- **GET /api/network/stats** - Network statistics
|
||||
- **GET /api/network/topology** - Ring topology data
|
||||
- **POST /api/nodes/register** - Register/update node status
|
||||
- **PUT /api/nodes/:nodeId** - Update node information
|
||||
|
||||
### 📊 Web Dashboard
|
||||
- Real-time network statistics
|
||||
- Interactive ring topology visualization
|
||||
- Node status monitoring
|
||||
- Connection health tracking
|
||||
- Auto-refresh every 5 seconds
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Start the Dashboard Server
|
||||
```bash
|
||||
# From the ringnet root directory
|
||||
npm run start:dashboard
|
||||
|
||||
# Or with development mode (auto-restart)
|
||||
npm run dashboard:dev
|
||||
|
||||
# Or directly from server directory
|
||||
cd server
|
||||
npm start
|
||||
```
|
||||
|
||||
The dashboard will be available at: **http://localhost:3000**
|
||||
|
||||
### 2. Start Nodes with Dashboard Reporting
|
||||
```bash
|
||||
# Start Oracle node with dashboard reporting
|
||||
npm run start:oracle -- --port 8080 --dashboard http://localhost:3000
|
||||
|
||||
# Start regular nodes
|
||||
npm run start:node -- --port 8081 --bootstrap localhost:8080 --dashboard http://localhost:3000
|
||||
npm run start:node -- --port 8082 --bootstrap localhost:8080 --dashboard http://localhost:3000
|
||||
```
|
||||
|
||||
### 3. View the Dashboard
|
||||
Open your browser to **http://localhost:3000** to see:
|
||||
- Network statistics (total nodes, connections, oracle nodes)
|
||||
- Live list of active nodes
|
||||
- Interactive ring topology visualization
|
||||
- Real-time status updates
|
||||
|
||||
## API Examples
|
||||
|
||||
### Get Network Statistics
|
||||
```bash
|
||||
curl http://localhost:3000/api/network/stats
|
||||
```
|
||||
|
||||
### Get All Nodes
|
||||
```bash
|
||||
curl http://localhost:3000/api/nodes
|
||||
```
|
||||
|
||||
### Get Ring Topology
|
||||
```bash
|
||||
curl http://localhost:3000/api/network/topology
|
||||
```
|
||||
|
||||
### Register a Node (used automatically by nodes)
|
||||
```bash
|
||||
curl -X POST http://localhost:3000/api/nodes/register \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"nodeId": "abc123...",
|
||||
"port": 8080,
|
||||
"isOracle": true,
|
||||
"ringPosition": 0
|
||||
}'
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
- `PORT` - Server port (default: 3000)
|
||||
|
||||
### Node Configuration
|
||||
Nodes automatically report to the dashboard when started with the `--dashboard` parameter:
|
||||
```bash
|
||||
--dashboard http://localhost:3000
|
||||
```
|
||||
|
||||
## Dashboard Features
|
||||
|
||||
### Network Statistics
|
||||
- **Total Nodes**: Number of active nodes in the network
|
||||
- **Oracle Nodes**: Number of Oracle nodes providing enhanced services
|
||||
- **Total Connections**: Sum of all peer connections
|
||||
- **Last Updated**: Timestamp of the most recent update
|
||||
|
||||
### Node List
|
||||
- Real-time status indicators (active/inactive)
|
||||
- Node type identification (Oracle vs Regular)
|
||||
- Ring position and port information
|
||||
- Last seen timestamps
|
||||
|
||||
### Ring Topology Visualization
|
||||
- Interactive circular visualization of the ring
|
||||
- Node positioning based on ring coordinates
|
||||
- Color-coded Oracle nodes (orange) vs regular nodes (blue)
|
||||
- Click nodes for detailed information
|
||||
- Visual representation of the double-ring structure
|
||||
|
||||
### Auto-Monitoring
|
||||
- Nodes automatically register and update their status
|
||||
- Inactive nodes are removed after 5 minutes of no updates
|
||||
- Real-time updates every 5 seconds
|
||||
- Graceful handling of network disconnections
|
||||
|
||||
## Dependencies
|
||||
|
||||
- **express** - Web server framework
|
||||
- **cors** - Cross-origin resource sharing
|
||||
- **ws** - WebSocket support (for future real-time features)
|
||||
- **chalk** - Colored terminal output
|
||||
|
||||
## Development
|
||||
|
||||
### Running in Development Mode
|
||||
```bash
|
||||
npm run dashboard:dev
|
||||
```
|
||||
|
||||
### API Testing
|
||||
The dashboard includes a health check endpoint:
|
||||
```bash
|
||||
curl http://localhost:3000/health
|
||||
```
|
||||
|
||||
### Custom Styling
|
||||
Modify `public/index.html` to customize the dashboard appearance. The dashboard uses:
|
||||
- CSS Grid for responsive layout
|
||||
- CSS backdrop-filter for glassmorphism effects
|
||||
- Vanilla JavaScript for API interactions
|
||||
- SVG-based ring visualization
|
||||
|
||||
## Integration
|
||||
|
||||
Nodes automatically report their status when the `--dashboard` parameter is provided. The reporting includes:
|
||||
- Node identification and type
|
||||
- Ring position and topology
|
||||
- Connection status and peer information
|
||||
- Network statistics and health data
|
||||
|
||||
The dashboard is designed to be lightweight and can run alongside the ring network without affecting performance.
|
||||
Referencia en una nueva incidencia
Block a user