ASP.NET Core MVC技术问题:局部刷新元素与RFID数据实时处理
解决方案
一、局部刷新页面中的多个表格
不用整页刷新,推荐两种实用方案:
1. 定时轮询+DOM更新(快速落地)
用setInterval定时调用后端接口获取表格最新数据,直接替换页面上的表格内容,避免整页刷新的生硬感。示例代码:
// 定义刷新表格的核心函数 function refreshTables() { // 更新表格1:从后端获取渲染好的HTML片段 fetch('/api/table1/latest') .then(res => res.text()) .then(html => { document.getElementById('table1-container').innerHTML = html; }); // 同理更新表格2 fetch('/api/table2/latest') .then(res => res.text()) .then(html => { document.getElementById('table2-container').innerHTML = html; }); } // 每3秒执行一次刷新(间隔可根据业务调整) setInterval(refreshTables, 3000);
如果后端返回JSON格式数据,还可以自己拼接表格DOM元素,灵活性更强。
2. WebSocket实时推送(高效低延迟)
如果数据更新频繁,用WebSocket让后端主动推送变化,前端收到后立即更新表格,避免无用的轮询请求。示例前端代码:
const socket = new WebSocket('ws://your-server/ws/table-updates'); socket.onmessage = function(event) { const updateData = JSON.parse(event.data); // 根据推送的标识更新对应表格 if (updateData.target === 'table1') { document.getElementById('table1-container').innerHTML = updateData.content; } else if (updateData.target === 'table2') { document.getElementById('table2-container').innerHTML = updateData.content; } };
后端需要实现WebSocket服务,当数据库数据变化时主动向前端推送更新内容。
二、持续读取RFID并更新数据库(无页面也能运行)
这个功能完全不能依赖前端页面,必须用后台服务实现:
1. 编写独立的后台程序
用Python、Node.js、C#等语言写一个独立程序,核心做两件事:
- 对接RFID阅读器:根据阅读器的硬件协议(比如USB串口、TCP/IP),用对应SDK或库建立连接,持续监听数据流
- 操作数据库:读取到RFID芯片数据后,直接执行数据库更新语句
示例Python代码(基于pyserial读取串口RFID):
import serial import psycopg2 # 以PostgreSQL为例,其他数据库用对应驱动 # 连接RFID阅读器串口(参数根据硬件实际配置调整) ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 连接数据库 conn = psycopg2.connect( dbname="your_db", user="your_user", password="your_pass", host="localhost" ) cur = conn.cursor() while True: # 读取RFID数据并去除冗余字符 rfid_code = ser.readline().decode('utf-8').strip() if rfid_code: # 执行数据库更新 update_sql = "UPDATE asset SET last_scanned = NOW() WHERE rfid = %s" cur.execute(update_sql, (rfid_code,)) conn.commit()
2. 将程序注册为系统服务
把这个程序配置成系统后台服务,确保即使没有页面打开、用户未登录,程序也能持续运行:
- Linux:用systemd创建服务配置文件,设置开机自启
- Windows:用NSSM(Non-Sucking Service Manager)将程序包装成Windows服务
3. 前端交互(可选)
如果前端需要展示实时数据,让后台服务同时提供API或WebSocket接口,前端通过这些接口获取RFID更新后的数据库数据即可。
内容的提问来源于stack exchange,提问作者Thomas Koch
相关产品推荐
相关产品推荐

