//const socketClient = require('./socketClient') const socketServer = require('./socketServer') const Koa = require('koa') const app = new Koa() var http = require('http'); var server = http.createServer(app.callback()); io = require('socket.io').listen(server); var sendProtocal = require('./protocal/sendProtocal') var command = require('./protocal/command') // socket 服务开启 let socketEvent = null; var connectCount = 0; var lastBuffer = null; io.sockets.on('connection', function (socket) { // 取零 socket.on('startSetZero', function () { if(socketEvent!==null) { let sendData = sendProtocal.beginSetZero(); socketEvent.write(sendData) } }) // 停止取零 socket.on('stopSetZero', function () { if(socketEvent!==null) { let sendData = sendProtocal.endSetZero(); socketEvent.write(sendData) } }) // 开始采集 socket.on('startCollection', function () { if(socketEvent!==null) { let sendData = sendProtocal.startCollection(); socketEvent.write(sendData) } }) // 停止采集 socket.on('stopCollection', function () { if(socketEvent!==null) { let sendData = sendProtocal.endCollection(); socketEvent.write(sendData) } }) // 复位设备 socket.on('resetDevice', function () { if(socketEvent!==null) { let sendData = sendProtocal.resetDevice(); socketEvent.write(sendData) } }) socket.on('syncConnectCount', function () { if(connectCount !='0') { console.log('已有初始连接' +connectCount +'个') } io.sockets.emit('connectCount', connectCount); }) }) socketServer.on('connection',(socket)=>{ console.log('连接已建立') socketEvent = socket socketServer.getConnections((err, count)=>{ if(err){ console.warn(err); } else { console.log(`当前有${count}个连接`); connectCount = count io.sockets.emit('connectCount', count); } }); socket.on('data', (data)=>{ if (lastBuffer !== null) { data = Buffer.concat([lastBuffer, data]); } let flag = 1; while(flag){ let validNumByteArray = new Uint8Array(data.slice(1, 3)); let validNum = validNumByteArray[0] if(data.length >validNum) { let validateData = data.slice(0, 1 + 2 +validNum); io.sockets.emit('validateData',validateData); lastBuffer = data.slice(1+2+validNum) if(lastBuffer.length >=1+2+validNum) { data = lastBuffer continue; } } else if(data.length == 1+2+validNum) { io.sockets.emit('validateData',data); lastBuffer = null; } else { lastBuffer = data; } flag = 0; } // 处理压力板发过来的数据 }); socket.on('error', (err)=>{ console.warn(err); socket.destroy(); }); socket.on('end', ()=>{ io.sockets.emit('disConnectOneClient'); //socketServer.close(); }); }) module.exports = server