过滤无用消息

This commit is contained in:
2026-06-01 17:47:16 +08:00
parent 2398f17070
commit 4706ef9bf7
5 changed files with 66 additions and 50 deletions

View File

@@ -309,30 +309,31 @@ class HomeController extends Controller {
// 保存未知消息 // 保存未知消息
async saveUnknown() { async saveUnknown() {
const { ctx } = this; const ctx = this.ctx;
try { try {
const body = ctx.request.body; 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 = { const form = {
system_type: system_type, msg_id: msg_id,
sn_number: sn_number,
original_msg: original_msg, original_msg: original_msg,
msg_data: msg_data, msg_data: msg_data,
created_at: created_at created_at: created_at
}; };
const result = await ctx.service.home.saveUnknown(form); const result = await ctx.service.home.saveUnknown(form);
if (result == "error") { if (result == "error") {
this.setResponse(ctx, 500, '服务器错误', "none"); setResponse(ctx, 500, '服务器错误', "none");
return; return;
} }
if (result) { if (result) {
this.setResponse(ctx, 200, '保存未知消息成功', "none"); setResponse(ctx, 200, '保存未知消息成功', "none");
} else { } else {
this.setResponse(ctx, 404, '保存未知消息失败', "none"); setResponse(ctx, 404, '保存未知消息失败', "none");
} }
} catch (error) { } catch (error) {
const blockName = fileName + "--" + "saveUnknown"; const blockName = fileName + "--" + "saveUnknown";
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error); ctx.app.middleware.utils.log('../../controllerLog', blockName + ">>>>" + error);
this.setResponse(ctx, 500, '服务器错误', "none"); setResponse(ctx, 500, '服务器错误', "none");
} }
} }

View File

@@ -14,45 +14,53 @@ module.exports = (app) => {
console.log('socket客户端已连接'); console.log('socket客户端已连接');
}); });
socket.on('data', async function (data) { socket.on('data', async function (data) {
let value = data.toString('hex');
console.log(value);
let response = "000000068100"; let response = "000000068100";
socket.write(Buffer.from(response, 'hex')); socket.write(Buffer.from(response, 'hex'));
// 00000043010000000000000000000000000000000000000000 18 31353037365f32303236303330333135313835315f323832 00 0f 0102030405060708090a0b0c0d0e0f let value = data.toString('hex');
let sn_value = value.slice(52, 100), if (value.length > 60) {
snBuffer = Buffer.from(sn_value, 'hex'), let Msg_id_len, length, Msg_id, msgID, snNumber, Total_len, Cmd_code, Token, Content_len, Content, msgData;
snNumber = snBuffer.toString('ascii').split("_")[0].padStart(8, '0'), Msg_id_len = value.slice(50, 52);
msg_value = value.slice(104, value.length), length = 52 + parseInt(Msg_id_len, 16) * 2;
msgBuffer = Buffer.from(msg_value, 'hex'), Msg_id = value.slice(52, length);
msgData = msgBuffer.toString('ascii'); msgID = Buffer.from(Msg_id, 'hex').toString();
console.log(msgData) snNumber = msgID.split("_")[0].padStart(8, '0');
// socket接收消息后触发事件监听器,将消息发送给websocket客户端并存储在数据库中 if (/^\d+$/.test(snNumber) && !/^0+$/.test(snNumber)) {
shunt.socketEmitter().emit(snNumber, { msg_data: msgData, created_at: new Date() }); Total_len = value.slice(0, 8);
const shortMsg = await app.curl('http://127.0.0.1:' + app.server.address().port + '/shortMsg', { Cmd_code = value.slice(8, 10);
dataType: 'json', Token = value.slice(10, 50);
contentType: 'application/x-www-form-urlencoded', Content_len = value.slice(length, length + 4);
method: 'POST', Content = value.slice(length + 4, value.length);
timeout: 3000, msgData = Buffer.from(Content, 'hex').toString('ascii');
data: { // socket接收消息后触发事件监听器,将消息发送给websocket客户端并存储在数据库中
sn_number: snNumber, shunt.socketEmitter().emit(snNumber, { msg_data: msgData, created_at: new Date() });
original_msg: value, const shortMsg = await app.curl('http://127.0.0.1:' + app.server.address().port + '/shortMsg', {
msg_data: msgData, dataType: 'json',
created_at: new Date() contentType: 'application/x-www-form-urlencoded',
}, method: 'POST',
}); timeout: 3000,
if (shortMsg.data.code == 404) { data: {
await app.curl('http://127.0.0.1:' + app.server.address().port + '/saveUnknown', { sn_number: snNumber,
dataType: 'json', original_msg: value,
contentType: 'application/x-www-form-urlencoded', msg_data: msgData,
method: 'POST', created_at: new Date()
timeout: 3000, },
data: { });
system_type: 1, if (shortMsg.data.code == 404) {
original_msg: value, await app.curl('http://127.0.0.1:' + app.server.address().port + '/saveUnknown', {
msg_data: msgData, dataType: 'json',
created_at: new Date() 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) { socket.on('end', function (data) {

View File

@@ -1,11 +1,12 @@
'use strict'; 'use strict';
module.exports = (app) => { 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 }, id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
system_type: INTEGER(3), msg_id: STRING(30),
sn_number: STRING(8),
original_msg: TEXT, original_msg: TEXT,
msg_data: TEXT, msg_data: TEXT,
created_at: DATE, created_at: DATE,
@@ -16,5 +17,5 @@ module.exports = (app) => {
updatedAt: false, updatedAt: false,
}); });
return Unknown; return UnknownSN;
}; };

View File

@@ -306,7 +306,7 @@ class HomeService extends Service {
async saveUnknown(form) { async saveUnknown(form) {
const { ctx } = this; const { ctx } = this;
try { try {
const result = await ctx.model3.Unknown.create(form); const result = await ctx.model3.UnknownSN.create(form);
return result || false; return result || false;
} catch (error) { } catch (error) {
const blockName = fileName + "--" + "saveUnknown"; const blockName = fileName + "--" + "saveUnknown";

View File

@@ -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":""}