|
|
// routes/sse/infoPush.js 文件
|
|
|
const express = require("express");
|
|
|
const moment = require("moment");
|
|
|
|
|
|
const mysql = require('mysql2');
|
|
|
const pool = mysql.createPool({
|
|
|
host: 'localhost',
|
|
|
user: 'root',
|
|
|
password: 'Skyinno251,',
|
|
|
database: 'appserver',
|
|
|
connectionLimit: 10 // 连接池最大连接数
|
|
|
});
|
|
|
|
|
|
// const {oracleRun} = require("../../oracle");
|
|
|
|
|
|
const router = express.Router();
|
|
|
router.get("/ai/question/push", (req, res) => {
|
|
|
// 设置 SSE 响应类型(告诉客户端响应类型,这是一个SSE事件流)
|
|
|
res.setHeader("Content-Type", "text/event-stream;charset=utf-8");
|
|
|
/**
|
|
|
* 告诉浏览器不要直接使用缓存中的资源,而是应该向服务器发送请求来检查该资源是否有更新。
|
|
|
* 确保用户获取到最新内容是非常有用,尤其是在内容频繁更新的Web应用中。
|
|
|
* */
|
|
|
res.setHeader("Cache-Control", "no-cache");
|
|
|
// 用于控制网络连接的持久性。
|
|
|
res.setHeader("Connection", "keep-alive");
|
|
|
// 告诉浏览器,来自任何源的请求都可以被接受并访问该资源。可以跨域
|
|
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
console.log("进入到长连接了")
|
|
|
let index = 0;
|
|
|
const timer = setInterval(() => {
|
|
|
|
|
|
const date = new Date();
|
|
|
const formattedDate = moment(date).format('YYYY-MM-DD HH:mm:ss');
|
|
|
console.log(formattedDate);
|
|
|
|
|
|
console.log("正在持续返回数据中ing")
|
|
|
// const data = { message: `Current time is ${new Date().toLocaleTimeString()}`};
|
|
|
const data = { message: `Current time is ${formattedDate}`};
|
|
|
res.write(`data: ${JSON.stringify(data)}\n\n`);
|
|
|
|
|
|
//res.write("data: " + JSON.stringify({ message: new Date().toLocaleTimeString()}) + "\n\n");
|
|
|
index++;
|
|
|
console.log(index)
|
|
|
|
|
|
const values = [date, formattedDate];
|
|
|
const insertSql = `INSERT INTO time_now (time, date_time) VALUES (?, ?)`;
|
|
|
pool.query(insertSql, values, (err, results) => {
|
|
|
if (err) {
|
|
|
console.error('Error internal database:', err);
|
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
|
return;
|
|
|
}
|
|
|
console.log(results)
|
|
|
// res.json({
|
|
|
// code:'200',
|
|
|
// data:results,
|
|
|
// });
|
|
|
});
|
|
|
|
|
|
|
|
|
}, 5000);
|
|
|
|
|
|
// 当客户端点击关闭时,我们清除定时器,并且结束推送
|
|
|
req.on("close", () => {
|
|
|
clearInterval(timer);
|
|
|
res.end();
|
|
|
});
|
|
|
});
|
|
|
|
|
|
|
|
|
// // 新增用户 POST 请求处理程序
|
|
|
// app.post('/api/user', (req, res) => {
|
|
|
// const { name, age } = req.body; // 从请求体中获取数据
|
|
|
// const values = [name, age];
|
|
|
// const insertSql = `INSERT INTO user (name, age) VALUES (?, ?)`;
|
|
|
// connectionpool.query(insertSql, values, (err, results) => {
|
|
|
// if (err) {
|
|
|
// console.error('Error querying database:', err);
|
|
|
// res.status(500).json({ error: 'Internal server error' });
|
|
|
// return;
|
|
|
// }
|
|
|
// res.json({
|
|
|
// code:'200',
|
|
|
// data:results,
|
|
|
// });
|
|
|
// });
|
|
|
// });
|
|
|
|
|
|
|
|
|
module.exports = router;
|