peerpigeon
Version:
WebRTC-based peer-to-peer mesh networking library with intelligent routing and signaling server
111 lines (77 loc) โข 3.32 kB
Markdown
# Node.js Examples for PeerPigeon
This directory contains Node.js examples demonstrating various PeerPigeon features.
## Examples
### Basic Storage Example (`basic-storage-example.js`)
A simple demonstration of core storage operations perfect for getting started:
- Store, retrieve, update, and delete data
- List all stored keys
- View storage statistics
- Clean shutdown handling
#### Running the Basic Example
```bash
cd examples/node
npm run basic-example
```
### Storage Test (`storage-test.js`)
A comprehensive test suite that demonstrates all distributed storage operations:
- **Basic Operations**: Store, retrieve, update, delete
- **Encryption & Access Control**: Private encrypted data, public data, peer access lists
- **Advanced Features**: Immutable data, CRDT support, TTL expiration
- **Bulk Operations**: Bulk store, retrieve, and delete
- **Search**: Search by key patterns, value content, and metadata
- **Management**: Key listing, statistics, backup/restore
- **Configuration**: Enable/disable storage, cleanup operations
#### Running the Storage Test
```bash
cd examples/node
npm run storage-test
```
Or directly:
```bash
node storage-test.js
```
#### Expected Output
The test will run through all storage operations and provide detailed output:
```
๐ Initializing PeerPigeon Mesh with Storage...
โ
Mesh initialized with peer ID: abcd1234...
๐ฆ Storage enabled: true
๐งช Running test: Basic Store and Retrieve
Stored and retrieved: {"message":"Hello, World!","timestamp":1234567890}
โ
Test passed: Basic Store and Retrieve
๐งช Running test: Update Operation
Updated: {"counter":1,"name":"original"} โ {"counter":2,"name":"updated"}
โ
Test passed: Update Operation
... (continues with all tests)
๐ TEST SUMMARY
================================================
Total Tests: 18
โ
Passed: 18
โ Failed: 0
Success Rate: 100.0%
๐ All tests passed! The Distributed Storage system is working perfectly.
```
### Basic Example (`basic-example.js`)
A simple example showing basic PeerPigeon mesh functionality (to be created).
## Requirements
- Node.js 16.0.0 or higher
- ES Modules support (using `"type": "module"` in package.json)
## Features Demonstrated
The examples show how to use PeerPigeon's distributed storage system with:
1. **WebDHT Integration**: Distributed hash table for data persistence
2. **Encryption**: Automatic encryption for private data using the crypto manager
3. **Access Control**: Fine-grained permissions for data access
4. **CRDT Support**: Conflict-free replicated data types for collaborative editing
5. **Search Capabilities**: Flexible search across keys, values, and metadata
6. **Bulk Operations**: Efficient batch processing of multiple items
7. **Backup/Restore**: Data portability and recovery features
## Architecture
Each example initializes a PeerPigeon mesh with the required features:
```javascript
const mesh = new PeerPigeonMesh({
enableWebDHT: true, // Distributed hash table (default: true)
enableCrypto: true, // Encryption/decryption (default: true)
enableDistributedStorage: true // Optional storage layer
});
```
The distributed storage manager provides a high-level API over the WebDHT with additional features like encryption, access control, and search capabilities.