conextra
Version:
Conextra for Web Development. Helps create a SPWA (Single-page Progressive Web Application).
57 lines (41 loc) • 2.32 kB
JavaScript
'use script';
require('log-report');
var { Worker, isMainThread } = require('node:worker_threads'),
path = require('node:path'),
configSets = require('config-sets'),
conextraConfig = configSets('conextra', {
isDebug: false,
pathToResourseMap: 'data/resourse_map.json',
pathToDataDir: "data"
}),
webServerConfig = configSets('tiny-https-server'),
web_cluster = null,
webSocketServer = null;
createWebCluster();
if (isMainThread) {
createWebSocketServer();
console.log(`Web server started on port ${webServerConfig.port}`);
}
function createWebCluster() {
web_cluster = new Worker(path.join(__dirname, 'web_cluster.js'));
if (!isMainThread) { return; }
web_cluster.on('message', (message) => { pDebug('Received from WebCluster:', message); });
web_cluster.on('error', (error) => { pError('WebCluster error:', error); });
web_cluster.on('online', () => { pDebug('WebCluster is online'); });
web_cluster.on('listening', (address) => { pDebug('WebCluster is listening on', address); });
web_cluster.on('disconnect', () => { pDebug('WebCluster disconnected'); });
web_cluster.on('exit', (code) => { pDebug(`WebCluster exited with code ${code}`); createWebCluster(); });
}
function createWebSocketServer() {
webSocketServer = new Worker(path.join(__dirname, 'main_websocket_worker.js'));
if (!isMainThread) { return; }
webSocketServer.on('message', (message) => { pDebug('Received from WebSocketServer:', message); });
webSocketServer.on('error', (error) => { pError('WebSocketServer error:', error); });
webSocketServer.on('online', () => { pDebug('WebSocketServer is online'); });
webSocketServer.on('listening', (address) => { pDebug('WebSocketServer is listening on', address); });
webSocketServer.on('disconnect', () => { pDebug('WebSocketServer disconnected'); });
webSocketServer.on('exit', (code) => { pDebug(`WebSocketServer exited with code ${code}`); createWebSocketServer(); });
}
// Debugging
function pDebug(...args) { if (conextraConfig.isDebug) { console.log(`[ DEBUG ] 'conextra' `, ...args); } }
function pError(...args) { if (conextraConfig.isDebug) { console.error(`[ ERROR ] 'conextra' `, ...args); } }