Appearance
HTTP对接
从Scada的HTTP转发里面获取实时数据与控制数据
主要用于测试,实际需要写在自己的服务端
javascript
const {getVariant,executeSql,exePgSqlR,exePgSqlCUD,exeSqliteSqlR,exeSqliteSqlCUD,getCurrentOrLastValue,setVariantValue,watch,watchAlarm,table,executeDataSourceSql,sendWxTextMessage,sendWxMessage,sendDingTextMessage,sendDingMessage,alarm } = require("GlobalConfig");//头文件请勿删除
const {getFormulaGroupList,getFormulaList,delFormula,getLastDownFormula,addFormula,editFormula,downloadFormula} = require("FormulaApi");//头文件请勿删除
const {generateTime} = require('hj212')
const http = require('http');
const url = require('url');
// 指定要监听的端口
const PORT = 7878;
// 指定处理路径
const HANDLE = '/device/getVariantList';
// 创建HTTP服务器
const server = http.createServer((req, res) => {
// 解析URL
const parsedUrl = url.parse(req.url, true);
const pathname = parsedUrl.pathname;
// 设置CORS头,允许跨域请求(可选)
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
// 处理OPTIONS预检请求
if (req.method === 'OPTIONS') {
res.writeHead(200);
res.end();
return;
}
// 只处理指定路径
if (pathname === HANDLE) {
let body = '';
// 收集请求体数据(如果是POST/PUT请求)
req.on('data', chunk => {
body += chunk.toString();
});
// 请求结束时处理
req.on('end', () => {
console.log(`${generateTime('ss')} 接收到 ${HANDLE} 请求, 请求体: ${body}`);
const result = JSON.parse(body)
// 控制变量的值T2等于HTTP转发的T1的值
if(result['T1']){
`T2`.value = result['T1']
}
// 返回响应
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({
code: 0,
message: '成功接收到请求'
}));
});
req.on('error', (err) => {
console.error('请求处理错误:', err);
res.writeHead(500, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: '服务器内部错误' }));
});
} else {
// 其他路径返回404
res.writeHead(404, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: '路径未找到' }));
}
});
// 启动服务器
server.listen(PORT, () => {
console.log(`服务器已启动,监听端口: ${PORT}, 测试地址: http://localhost:${PORT}${HANDLE}, 等待请求...\n`);
});
// 处理服务器错误
server.on('error', (err) => {
console.error('服务器错误:', err);
});
// 优雅关闭
process.on('SIGINT', () => {
server.close(() => {
process.exit(0);
});
});