|
|
import express from "express"; import { Server } from "ws"; import http from "http"; import bodyParser from "body-parser"; import morgan from "morgan"; import multer from "multer"; import cors from 'cors'; import path from "path";
import cmdRouter from "./routes/cmd"; import authRouter from "./routes/auth"; import measureRouter from "./routes/measure"; import measureAnalysisRouter from "./routes/measureAnalysis"; import measureDataRouter from "./routes/measureData"; import railRouter from "./routes/rail"; import calibrationRouter from "./routes/calibration";
// import { defaultStatus, StatusDatagram } from "./types/wsTypes";
import { WsProxy } from "./utils/wss"; import { ContextMessage, defaultContext, defaultMeasureState } from "./types/wsTypes";
const app = express(); app.use(express.static("public")); app.use(bodyParser.urlencoded()); app.use(bodyParser.json()); app.use(morgan("dev")); app.use(cors());
const server = http.createServer(app);
WsProxy.addActionForClientConnect((ws) => { // DeviceContext
ws.send( JSON.stringify({ messageType: "DeviceContext", data: app.locals["context"], path: "/deviceContext", }) ); }) // 在HTTP服务器上初始化WebSocket服务器
WsProxy.init(server); // const wss = new Server({ server });
app.locals["context"] = defaultContext; app.locals["measure"] = defaultMeasureState;
// app.get("/", (req, res) => {
// res.send("Hello World!");
// });
app.use("/api/cmd", cmdRouter); app.use("/api/auth", authRouter); app.use("/api/measurement-analysis", measureAnalysisRouter); app.use("/api/measurement-task", measureRouter); app.use("/api/measurement-data", measureDataRouter); app.use("/api/standard-rail", railRouter); app.use("/api/calibration", calibrationRouter);
const storage = multer.diskStorage({ destination: function (req, file, cb) { // 指定文件存储的目录
cb(null, 'uploads/'); }, filename: function (req, file, cb) { // 指定文件保存的文件名
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); } });
const upload = multer({ storage: storage }); // 创建上传文件的路由
app.post('/upload', upload.single('file'), (req, res) => { if (!req.file) { res.status(400).json({msg:'未收到文件'}); } else { res.json({msg:'文件上传成功!文件路径:' + req.file.path}); } });
//@ts-ignore
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send("Something broke!"); });
// 监听端口
const PORT = process.env.PORT || 8080; server.listen(PORT, () => { console.log(`Server is listening on port ${PORT}`); });
|