app.js 3.3 KB

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