stream.on('message', messageProcess.bind(this,socket))
async function messageProcess (client, packet) {
log.info({packet:packet},'incoming packet on socket side')
let res = {}
if (this.clientTracking && packet.clientID) {
client.ID = packet.clientID
res.cmd='ackID'
}
else {
res = await this._packetProcess(clone(packet)) || {}
if (Object.keys(res).length === 0) res = { error: 'socket packet command function likely did not return a promise', packet:packet}
}
if (packet) {
res._header = clone(packet._header,false) || {}
delete packet._header
} else res._header = {}
res._header.request = clone(packet,false)
res._header.responder = {name:this.name,instanceID:this.id}
res._header.socket = this.address()
if (!res.cmd) res.cmd = 'reply'
let [err, ser] = await btc(stream.serialize)(res)
if (err) ser = await stream.serialize({ error: 'was not able to serialze the res packet', err:err, _header:{id:res._header.id}})
log.info(await send(ser))
}
})
log.info({opts: this.opts},'socket created')
return res
})
}
async _destroy () {
log.info('closing down socket')
await this.close()
log.info('all connections closed....exiting')
process.exit()
}