diff --git a/package.json b/package.json index c4cf8e1..97b80a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uci/websocket", - "version": "0.3.9", + "version": "0.3.10", "description": "JSON packet host websocket server", "main": "src", "scripts": { @@ -33,15 +33,15 @@ "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "esm": "^3.2.25", - "mocha": "^6.2.0", - "nodemon": "^1.19.1" + "mocha": "^6.2.2", + "nodemon": "^2.0.0" }, "dependencies": { - "@uci-utils/logger": "0.0.15", + "@uci-utils/logger": "0.0.16", "await-to-js": "^2.1.1", "better-try-catch": "^0.6.2", "clone": "^2.1.2", "death": "^1.1.0", - "ws": "^7.1.2" + "ws": "^7.2.0" } } diff --git a/src/socket.js b/src/socket.js index 6d781e9..9ea27bb 100644 --- a/src/socket.js +++ b/src/socket.js @@ -41,6 +41,7 @@ class Socket extends Server { this._authenticate = this._authenticate.bind(this) this.close = promisify(this.close).bind(this) log = logger({ + package:'@uci/websocket', file: 'src/socket.js', class: 'Socket', name: 'websocket', @@ -48,6 +49,8 @@ class Socket extends Server { }) } // end constructor + get active() { return this.listening } + /** * create - Description * @@ -78,12 +81,19 @@ class Socket extends Server { this.on('error', err => { this.errorCount +=1 // log errors here this.errors.push(err) - if(this.errorCount>2) this.emit('warn', {msg:'something bad maybe going on, 3 errors', errors:this.errors}) - if(this.errorCount>5) this.emit('fatal', {msg:'something fatal is going on, 6 errors', errors:this.errors}) + if(this.errorCount>2) this.emit('status', {level:'warn',msg:'something bad maybe going on, 3 errors', errors:this.errors}) + if(this.errorCount>5) { + let errors = {level:'fatal',msg:'something fatal is going on, 6 errors', errors:this.errors} + log.fatal(errors) + this.listening=false + this.emit('status', {active:this.active}) + this.emit('status', errors) + } }) this.wss = new WSS({server:this}) this.wss.on('error', err => {this.emit('error', err)}) // bubble up errors this.wss.on('connection', this._connectionHandler.bind(this)) + this.emit('status',{active:this.active}) resolve(`websocket ready and listening at ${this.address().address}:${this.address().port}`) }) super.listen(this.opts) @@ -189,7 +199,7 @@ class Socket extends Server { } else { log.info({msg:'consumer authenticated successfuly', consumer:consumer.name, consumer_id:consumer.id}) - if (this.allowAnonymous) log.warn({msg:'consumer connected anonymously', consumer:consumer.name, consumer_id:consumer.id}) + if (this.allowAnonymous) log.warn({msg:'web consumer connected anonymously', consumer:consumer.name, consumer_id:consumer.id}) resolve(consumer.authenticated) } } @@ -265,7 +275,7 @@ class Socket extends Server { res = { error: 'Could not JSON parse packet', packet:strPacket } } else { - log.warn({method:'_listen', line:266, packet:packet, msg:'parsed packet'}) + log.debug({method:'_listen', line:266, packet:packet, msg:'parsed packet'}) res = (await this._packetProcess(clone(packet))) || {} if (Object.keys(res).length === 0) res = {