diff --git a/app/controller/home.js b/app/controller/home.js index 1e67834..fbc42a8 100644 --- a/app/controller/home.js +++ b/app/controller/home.js @@ -309,30 +309,31 @@ class HomeController extends Controller { // 保存未知消息 async saveUnknown() { - const { ctx } = this; + const ctx = this.ctx; try { const body = ctx.request.body; - const { system_type, original_msg, msg_data, created_at } = body; + const { msg_id, sn_number, original_msg, msg_data, created_at } = body; const form = { - system_type: system_type, + msg_id: msg_id, + sn_number: sn_number, original_msg: original_msg, msg_data: msg_data, created_at: created_at }; const result = await ctx.service.home.saveUnknown(form); if (result == "error") { - this.setResponse(ctx, 500, '服务器错误', "none"); + setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { - this.setResponse(ctx, 200, '保存未知消息成功', "none"); + setResponse(ctx, 200, '保存未知消息成功', "none"); } else { - this.setResponse(ctx, 404, '保存未知消息失败', "none"); + setResponse(ctx, 404, '保存未知消息失败', "none"); } } catch (error) { const blockName = fileName + "--" + "saveUnknown"; - ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error); - this.setResponse(ctx, 500, '服务器错误', "none"); + ctx.app.middleware.utils.log('../../controllerLog', blockName + ">>>>" + error); + setResponse(ctx, 500, '服务器错误', "none"); } } diff --git a/app/middleware/socket/socketServer.js b/app/middleware/socket/socketServer.js index a9a34fb..77b2e66 100644 --- a/app/middleware/socket/socketServer.js +++ b/app/middleware/socket/socketServer.js @@ -14,45 +14,53 @@ module.exports = (app) => { console.log('socket客户端已连接'); }); socket.on('data', async function (data) { - let value = data.toString('hex'); - console.log(value); let response = "000000068100"; socket.write(Buffer.from(response, 'hex')); - // 00000043010000000000000000000000000000000000000000 18 31353037365f32303236303330333135313835315f323832 00 0f 0102030405060708090a0b0c0d0e0f - let sn_value = value.slice(52, 100), - snBuffer = Buffer.from(sn_value, 'hex'), - snNumber = snBuffer.toString('ascii').split("_")[0].padStart(8, '0'), - msg_value = value.slice(104, value.length), - msgBuffer = Buffer.from(msg_value, 'hex'), - msgData = msgBuffer.toString('ascii'); - console.log(msgData) - // socket接收消息后触发事件监听器,将消息发送给websocket客户端并存储在数据库中 - shunt.socketEmitter().emit(snNumber, { msg_data: msgData, created_at: new Date() }); - const shortMsg = await app.curl('http://127.0.0.1:' + app.server.address().port + '/shortMsg', { - dataType: 'json', - contentType: 'application/x-www-form-urlencoded', - method: 'POST', - timeout: 3000, - data: { - sn_number: snNumber, - original_msg: value, - msg_data: msgData, - created_at: new Date() - }, - }); - if (shortMsg.data.code == 404) { - await app.curl('http://127.0.0.1:' + app.server.address().port + '/saveUnknown', { - dataType: 'json', - contentType: 'application/x-www-form-urlencoded', - method: 'POST', - timeout: 3000, - data: { - system_type: 1, - original_msg: value, - msg_data: msgData, - created_at: new Date() - }, - }); + let value = data.toString('hex'); + if (value.length > 60) { + let Msg_id_len, length, Msg_id, msgID, snNumber, Total_len, Cmd_code, Token, Content_len, Content, msgData; + Msg_id_len = value.slice(50, 52); + length = 52 + parseInt(Msg_id_len, 16) * 2; + Msg_id = value.slice(52, length); + msgID = Buffer.from(Msg_id, 'hex').toString(); + snNumber = msgID.split("_")[0].padStart(8, '0'); + if (/^\d+$/.test(snNumber) && !/^0+$/.test(snNumber)) { + Total_len = value.slice(0, 8); + Cmd_code = value.slice(8, 10); + Token = value.slice(10, 50); + Content_len = value.slice(length, length + 4); + Content = value.slice(length + 4, value.length); + msgData = Buffer.from(Content, 'hex').toString('ascii'); + // socket接收消息后触发事件监听器,将消息发送给websocket客户端并存储在数据库中 + shunt.socketEmitter().emit(snNumber, { msg_data: msgData, created_at: new Date() }); + const shortMsg = await app.curl('http://127.0.0.1:' + app.server.address().port + '/shortMsg', { + dataType: 'json', + contentType: 'application/x-www-form-urlencoded', + method: 'POST', + timeout: 3000, + data: { + sn_number: snNumber, + original_msg: value, + msg_data: msgData, + created_at: new Date() + }, + }); + if (shortMsg.data.code == 404) { + await app.curl('http://127.0.0.1:' + app.server.address().port + '/saveUnknown', { + dataType: 'json', + contentType: 'application/x-www-form-urlencoded', + method: 'POST', + timeout: 3000, + data: { + msg_id: msgID, + sn_number: snNumber, + original_msg: value, + msg_data: msgData, + created_at: new Date() + }, + }); + } + } } }); socket.on('end', function (data) { diff --git a/app/model3/Unknown.js b/app/model3/UnknownSN.js similarity index 62% rename from app/model3/Unknown.js rename to app/model3/UnknownSN.js index 1ba5de1..e78bb47 100644 --- a/app/model3/Unknown.js +++ b/app/model3/UnknownSN.js @@ -1,11 +1,12 @@ 'use strict'; module.exports = (app) => { - const { INTEGER, TEXT, DATE } = app.Sequelize; + const { INTEGER, STRING, TEXT, DATE } = app.Sequelize; - const Unknown = app.model3.define('unknown', { + const UnknownSN = app.model3.define('unknown-sn', { id: { type: INTEGER(8), primaryKey: true, autoIncrement: true }, - system_type: INTEGER(3), + msg_id: STRING(30), + sn_number: STRING(8), original_msg: TEXT, msg_data: TEXT, created_at: DATE, @@ -16,5 +17,5 @@ module.exports = (app) => { updatedAt: false, }); - return Unknown; + return UnknownSN; }; \ No newline at end of file diff --git a/app/service/home.js b/app/service/home.js index 4c43adc..44f2d3e 100644 --- a/app/service/home.js +++ b/app/service/home.js @@ -306,7 +306,7 @@ class HomeService extends Service { async saveUnknown(form) { const { ctx } = this; try { - const result = await ctx.model3.Unknown.create(form); + const result = await ctx.model3.UnknownSN.create(form); return result || false; } catch (error) { const blockName = fileName + "--" + "saveUnknown"; diff --git a/unknownSNLog/2026/5/28.txt b/unknownSNLog/2026/5/28.txt new file mode 100644 index 0000000..9fbe6a5 --- /dev/null +++ b/unknownSNLog/2026/5/28.txt @@ -0,0 +1,6 @@ +[2026-5-28>>>17:37:40]>>>{"sn_number":"00015076","original_msg":"000000430100000000000000000000000000000000000000001831353037365f32303236303330333135313835315f323832000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""} +[2026-5-28>>>17:38:7]>>>{"sn_number":"00008192","original_msg":"000000a701746573747465737473740000000000000000000017383139325f32303231313032343230333334385f303239000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""} +[2026-5-28>>>17:39:58]>>>{"sn_number":"00008192","original_msg":"000000a701746573747465737473740000000000000000000017383139325f32303231313032343230333334385f303239000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""} +[2026-5-28>>>17:41:24]>>>{"sn_number":"00008192","original_msg":"000000a701746573747465737473740000000000000000000017383139325f32303231313032343230333334385f303239000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""} +[2026-5-28>>>17:42:35]>>>{"sn_number":"00008192","original_msg":"000000a701746573747465737473740000000000000000000017383139325f32303231313032343230333334385f303239000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""} +[2026-5-28>>>17:43:15]>>>{"sn_number":"00008192","original_msg":"000000a701746573747465737473740000000000000000000017383139325f32303231313032343230333334385f303239000f0102030405060708090a0b0c0d0e0f","msg_data":"\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f","created_at":""}