import { Socket as uSocket, sSocket} from '../src' import { fs } from 'mz' // made key cert into module that also uses environment variables const TLS = process.env.TLS || false const TLS_DIR = process.env.TLS_DIR || '/opt/certs' const TLS_NAME = process.env.TLD_NAME || 'wc.kebler.net' const TLS_KEY_PATH = process.env.TLS_KEY_PATH || `${TLS_DIR}/${TLS_NAME}.key` const TLS_CRT_PATH = process.env.TLS_CRT_PATH || `${TLS_DIR}/${TLS_NAME}.crt` let Socket = uSocket ; (async () => { // TODO dynamic import if(TLS_KEY_PATH && TLS_CRT_PATH && TLS) { Socket = sSocket console.log('using TLS') } class Test extends Socket { constructor(opts) { super(opts) } async _packetProcess(packet) { console.log('packet being processed at socket') if (packet.cmd) return await this[packet.cmd](packet.data,packet.name) return {error: 'no command in packet', packet: packet } } async doit(data,name) { return new Promise(resolve => { let res = {} console.log('data sent to doit = ', data) res.status ='success' res.name = name res.cmd = 'reply' res.data = 'this would be response data from socket doit function' resolve(res) }) } } const options = { tls: TLS, key: await fs.readFile(TLS_KEY_PATH), cert: await fs.readFile(TLS_CRT_PATH), // This is necessary only if using client certificate authentication. // requestCert: true, // This is necessary only if the client uses a self-signed certificate. // ca: [ fs.readFileSync('client-cert.pem') ] } options.path = true // let test = new Test() let test = new Test(options) await test.create() })().catch(err => { console.error('FATAL: UNABLE TO START SYSTEM!\n',err) })