diff --git a/package.json b/package.json index 1447e55..cc82af9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uci/base", - "version": "0.5.3", + "version": "0.5.4", "description": "Multi type and transport JSON packet communication base class. Used in UCI extended classes", "main": "src/base", "scripts": { @@ -46,11 +46,11 @@ "@uci-utils/bind-funcs": "^0.2.4", "@uci-utils/logger": "^0.0.18", "@uci-utils/ready": "^0.3.1", - "@uci/mqtt": "^0.3.1", - "@uci/socket": "^0.3.2", - "@uci/websocket": "^0.4.0", + "@uci/mqtt": "^0.3.2", + "@uci/socket": "^0.3.3", + "@uci/websocket": "^0.4.1", "await-to-js": "^2.1.1", - "is-plain-object": "^4.1.0", + "is-plain-object": "^4.1.1", "merge-anything": "^3.0.5" } } diff --git a/src/base.js b/src/base.js index 3b46efa..a84f676 100644 --- a/src/base.js +++ b/src/base.js @@ -293,7 +293,7 @@ class Base extends EventEmitter { } /** - * removeSocket - TODO not available + * removeSocket * * @param {string} name name of socket as created * @returns {String | Object } success string or error object @@ -301,20 +301,24 @@ class Base extends EventEmitter { async removeSocket(name) { // NOTE: uci consumers have .end renamed as .close to match socket method for convenience - if (!this.getSocket(name)) return 'no socket by that name' + if (typeof name !=='string') return 'no socket name passed, nothing to remove' + const socket = this.getSocket(name) + if (!socket) return 'no socket by that name, nothing to remove' let closeError - let [err] = await to(this._socket[name].close()) + if (typeof socket.close !== 'function') return 'bad socket no close function, nothing to remove' + let [err] = await to(socket.close()) if(err) if (err.code !== 'ERR_SERVER_NOT_RUNNING') { closeError = {socket:this._socket[name].name, error:err, msg:'socket/consumer closed with errors, but removed'} } this.emit('log', {level:'warn', msg:`socket ${name} has been removed`, socket:this._socket[name].opts}) - this._socket[name].removeAllListeners() + socket.removeAllListeners() + this.ready.removeObserver(socket.type==='c' ? this._socket[name].obsName : `${name}:socket`) delete this._socket[name] return closeError ? closeError : 'success' } getSocket(name) { - if (name) return this._socket[name] + if (name) return this._socket[name] || null else return this._socket } // returns array of names of sockets that pass filter