import express from "express"; import { Server } from "ws"; import http from "http"; import bodyParser from "body-parser"; import morgan from "morgan"; import cmdRouter from "./routes/cmd"; import debugRouter from "./routes/debug"; import authRouter from "./routes/auth"; import measureRouter from "./routes/measure"; import measureAnalysisRouter from "./routes/measureAnalysis"; import measureDataRouter from "./routes/measureData"; // import { defaultStatus, StatusDatagram } from "./types/wsTypes"; import { wsSend } 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")); const server = http.createServer(app); // 在HTTP服务器上初始化WebSocket服务器 const wss = new Server({ server }); wss.on("connection", ws => { console.log("Client connected"); // ws.send("Welcome to the WebSocket server!"); // ws.on("message", message => { // console.log(`Received message: ${message}`); // wss.clients.forEach(client => { // if (client.readyState === ws.OPEN) { // client.send(message.toString()); // } // }); // }); // DeviceContext ws.send( JSON.stringify({ messageType: "DeviceContext", data: app.locals["context"], path: "/deviceContext", }) ); // MeasureState ws.send( JSON.stringify({ messageType: "EVENT", data: app.locals["measure"], path: "/measurement-task/get-task-state", }) ); ws.on("close", () => { console.log("Client disconnected"); }); }); app.locals["wss"] = wss; app.locals["context"] = defaultContext; app.locals["measure"] = defaultMeasureState; // app.get("/", (req, res) => { // res.send("Hello World!"); // }); app.use("/api/debug", debugRouter); 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); //@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}`); });