app.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. //const socketClient = require('./socketClient')
  2. const socketServer = require('./socketServer')
  3. const Koa = require('koa')
  4. const app = new Koa()
  5. var http = require('http');
  6. var server = http.createServer(app.callback());
  7. io = require('socket.io').listen(server);
  8. var sendProtocal = require('./protocal/sendProtocal')
  9. var command = require('./protocal/command')
  10. // socket 服务开启
  11. let socketEvent = null;
  12. var connectCount = 0;
  13. var lastBuffer = null;
  14. io.sockets.on('connection', function (socket) {
  15. // 取零
  16. socket.on('startSetZero', function () {
  17. if(socketEvent!==null) {
  18. let sendData = sendProtocal.beginSetZero();
  19. socketEvent.write(sendData)
  20. }
  21. })
  22. // 停止取零
  23. socket.on('stopSetZero', function () {
  24. if(socketEvent!==null) {
  25. let sendData = sendProtocal.endSetZero();
  26. socketEvent.write(sendData)
  27. }
  28. })
  29. // 开始采集
  30. socket.on('startCollection', function () {
  31. if(socketEvent!==null) {
  32. let sendData = sendProtocal.startCollection();
  33. socketEvent.write(sendData)
  34. }
  35. })
  36. // 停止采集
  37. socket.on('stopCollection', function () {
  38. if(socketEvent!==null) {
  39. let sendData = sendProtocal.endCollection();
  40. socketEvent.write(sendData)
  41. }
  42. })
  43. // 复位设备
  44. socket.on('resetDevice', function () {
  45. if(socketEvent!==null) {
  46. let sendData = sendProtocal.resetDevice();
  47. socketEvent.write(sendData)
  48. }
  49. })
  50. socket.on('syncConnectCount', function () {
  51. if(connectCount !='0') {
  52. console.log('已有初始连接' +connectCount +'个')
  53. }
  54. io.sockets.emit('connectCount', connectCount);
  55. })
  56. })
  57. socketServer.on('connection',(socket)=>{
  58. console.log('连接已建立')
  59. socketEvent = socket
  60. socketServer.getConnections((err, count)=>{
  61. if(err){
  62. console.warn(err);
  63. } else {
  64. console.log(`当前有${count}个连接`);
  65. connectCount = count
  66. io.sockets.emit('connectCount', count);
  67. }
  68. });
  69. socket.on('data', (data)=>{
  70. if (lastBuffer !== null) {
  71. data = Buffer.concat([lastBuffer, data]);
  72. }
  73. let flag = 1;
  74. while(flag){
  75. let validNumByteArray = new Uint8Array(data.slice(1, 3));
  76. let validNum = validNumByteArray[0]
  77. if(data.length >validNum) {
  78. let validateData = data.slice(0, 1 + 2 +validNum);
  79. io.sockets.emit('validateData',validateData);
  80. lastBuffer = data.slice(1+2+validNum)
  81. if(lastBuffer.length >=1+2+validNum) {
  82. data = lastBuffer
  83. continue;
  84. }
  85. } else if(data.length == 1+2+validNum) {
  86. io.sockets.emit('validateData',data);
  87. lastBuffer = null;
  88. } else {
  89. lastBuffer = data;
  90. }
  91. flag = 0;
  92. }
  93. // 处理压力板发过来的数据
  94. });
  95. socket.on('error', (err)=>{
  96. console.warn(err);
  97. socket.destroy();
  98. });
  99. socket.on('end', ()=>{
  100. io.sockets.emit('disConnectOneClient');
  101. //socketServer.close();
  102. });
  103. })
  104. module.exports = server