peerpigeon
Version:
WebRTC-based peer-to-peer mesh networking library with intelligent routing and signaling server
53 lines (45 loc) ⢠1.47 kB
JavaScript
import { PeerPigeonServer } from './index.js';
/**
* Standalone PeerPigeon WebSocket Server
*
* Environment variables:
* - PORT: Server port (default: 3000)
* - HOST: Server host (default: localhost)
* - MAX_CONNECTIONS: Maximum connections (default: 1000)
* - CORS_ORIGIN: CORS origin (default: *)
* - HUB_MESH_NAMESPACE: Hub network namespace (default: pigeonhub-mesh)
*/
const port = parseInt(process.env.PORT || '3000', 10);
const host = process.env.HOST || 'localhost';
const maxConnections = parseInt(process.env.MAX_CONNECTIONS || '1000', 10);
const corsOrigin = process.env.CORS_ORIGIN || '*';
const hubMeshNamespace = process.env.HUB_MESH_NAMESPACE || 'pigeonhub-mesh';
const server = new PeerPigeonServer({
port,
host,
maxConnections,
corsOrigin,
hubMeshNamespace,
isHub: false // Regular signaling server by default
});
// Handle errors
server.on('error', (error) => {
console.error('ā Server error:', error);
});
// Handle shutdown gracefully
process.on('SIGINT', async () => {
console.log('\nš Received SIGINT, shutting down gracefully...');
await server.stop();
process.exit(0);
});
process.on('SIGTERM', async () => {
console.log('\nš Received SIGTERM, shutting down gracefully...');
await server.stop();
process.exit(0);
});
// Start the server
server.start().catch((error) => {
console.error('ā Failed to start server:', error);
process.exit(1);
});