UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

73 lines (49 loc) 2.06 kB
import {NodeJsLogger} from "../../util/role/NodeJsLogger.js"; import {Base, Constructable} from "../../../generic/util/Common.js"; import {ServerEndPoint} from "./ServerEndPoint.js"; const ws = require('ws') export class ConnectionServer extends NodeJsLogger(Base) { serverClass : Constructable<ServerEndPoint> serverConfig : Partial<ServerEndPoint> port : number = 0 connectionServerWS : any constructor (props : Partial<ConnectionServer>) { super(props) Object.assign(this, props) } start () : Promise<any> { return new Promise((resolve, reject) => { const connectionServerWS = this.connectionServerWS = new ws.Server({ clientTracking : true, port : this.port }, () => { this.port = this.connectionServerWS.address().port resolve() }) connectionServerWS.on('connection', wsClient => { this.debug("Connection received") const cls = this.serverClass const config = Object.assign({ socket : wsClient, logLevel : this.logLevel }, this.serverConfig || {}) const webSocketServer = new cls(config) webSocketServer.connect() }); connectionServerWS.on('error', () => { this.stop() } ); // wsServer.on('error', (e) => console.log("ERROR: ", e)); // wsServer.on('headers', (headers, request) => console.log("HEADERS: ", headers, request)); }) } stop () : Promise<any> { return new Promise((resolve, reject) => { if (this.connectionServerWS) this.connectionServerWS.close(() => { this.connectionServerWS = null resolve() }) else resolve() }) } }