163 líneas
4.4 KiB
Markdown
163 líneas
4.4 KiB
Markdown
# RingNet Dashboard Server
|
|
|
|
A REST API and web dashboard for monitoring RingNet network topology, nodes, and connections in real-time.
|
|
|
|
**🌐 Live Demo**: https://ringnet.cloud
|
|
**📂 Repository**: https://git.manalejandro.com/ale/ringnet
|
|
|
|
## 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.
|