SEMS-on-device-server/server.js

54 lines
1.6 KiB
JavaScript

import { createServer } from "node:http";
import next from "next";
import { Server } from "socket.io";
import { fork } from "node:child_process";
console.log(
`[server][服务器]设备ID:${process.env.NEXT_PUBLIC_DEVICE_ID}, 设备名称${process.env.NEXT_PUBLIC_DEVICE_NAME}\n[server][服务器] 模型推理API: ${process.env.MODEL_INFERENCE_API}\n[server][服务器] 炉次回传云服务器API: ${process.env.FURNACE_UPLOAD_API}`
);
const dev = process.env.NODE_ENV !== "production";
const hostname = "0.0.0.0";
const port = process.env.ON_DEVICE_SERVER_PORT; //22110;
// when using middleware `hostname` and `port` must be provided below
const app = next({ dev, hostname, port });
const handler = app.getRequestHandler();
app.prepare().then(() => {
const httpServer = createServer(handler);
const io = new Server(httpServer);
const forked = fork("./scanner.js");
io.on("connection", (socket) => {
console.log("[server][WebSocket]已连接");
socket.emit("msg", "connected");
// io.emit("msg", "io.emit");
forked.send("start");
socket.on("disconnect", () => {
console.log("[server][WebSocket]已断开连接");
forked.send("stop");
});
});
// socket_global.emit("msg","socket_global")
httpServer
.once("error", (err) => {
console.error(err);
process.exit(1);
})
.listen(port, () => {
console.log(`[server][服务器]已启用于 http://${hostname}:${port}`);
});
forked.on("message", (msg) => {
console.log("[server][子进程]]收到数据", msg);
io.emit("msg", msg);
});
//
});