提问人:Dikembe 提问时间:1/5/2023 更新时间:1/8/2023 访问量:40
如何从工作节点jssocket io串口切换到node express路由器?
Switching from working node js socket io serialport to node express router how to?
问:
我是 node express 的新手(很久以前就开始使用 node,但没有做太多事情),我想学习如何使用它。我正在浏览我的一些旧作品并阅读很多教程,但我似乎无法让这个工作。 我有这个应用程序,可以从串行端口上的一些传感器读取数据并将其发送到 sesors.ejs。我想用快递重新编程它。我在终端中有传感器读数,但在 ejs 中没有。
旧(工作)app.js
var http = require('http');
var fs = require('fs');
var url = require('url');
var path = require('path');
const { SerialPort } = require('serialport')
const { ByteLengthParser } = require('@serialport/parser-byte-length')
const port = new SerialPort({ path: 'COM4', baudRate: 9600 })
const parser = port.pipe(new ByteLengthParser({ length: 30 }))
var sensors = fs.readFileSync('views/sensors.ejs');
var app = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type':'text/html'});
res.end(sensors);
});
var io = require('socket.io').listen(app);
io.on('connection', function(data){
console.log
});
parser.on('data', function(data){
console.log(data.toString("UTF8"));
io.emit('data', data.toString("UTF8"))
});
app.listen(3000);
旧的(工作)sensors.ejs
<script>
var socket = io();
socket.on('data', function(data){...}
</script>
这很好用。
我经历了几个快速路由教程,但我不知道如何将io数据发送到路由器。
我在路由目录中c/p了从旧app.js到新sensor.js的大部分代码,没有fs,app.listen等。我有 c/p sensors.ejs 到 views 文件夹。
在新app.js我有:
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var sensorsRouter = require('./routes/senzori');
var app = express();
app.set('views', path.join(\__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(\__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/senzori', sensorsRouter);
index.ejs 和 users.ejs(获取 MySQL 数据)正在工作(Express 已安装并工作)
谢谢
答:
0赞
Dikembe
1/8/2023
#1
我已经找到了解决方案。如果其他任何像我这样“知识”水平的人需要解决方案,这里是:
我已将读取串行端口移至 bin/www
sensors.js中唯一的代码是:
router.get('/', function(req, res, next) {
res.render('sensors');
});
评论