89 lines
2.1 KiB
JavaScript
89 lines
2.1 KiB
JavaScript
const express = require("express");
|
|
const cors = require("cors");
|
|
const { createServer } = require("node:http");
|
|
const { Server } = require("socket.io");
|
|
const { errorConverter, errorHandler } = require('./middlewares/error.js');
|
|
const verifyJWTToken = require("./middlewares/verifyJWTToken.js");
|
|
const app = express();
|
|
const config = require("./config/config.js");
|
|
const morgan = require("./config/morgan");
|
|
const compression = require("compression");
|
|
|
|
if (config.env !== "test") {
|
|
app.use(morgan.successHandler);
|
|
app.use(morgan.errorHandler);
|
|
}
|
|
// const IP = '192.168.50.127'; // Replace with your local IP address
|
|
|
|
// gzip compression
|
|
app.use(compression());
|
|
|
|
// socket io
|
|
const server = createServer(app);
|
|
|
|
const io = new Server(server, {
|
|
pingTimeout: 60000,
|
|
cors: {
|
|
origin: "*",
|
|
credentials: true,
|
|
},
|
|
});
|
|
app.set("io", io);
|
|
|
|
var corOptions = {
|
|
origin: "*",
|
|
};
|
|
|
|
//middleware
|
|
app.use(cors(corOptions));
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
// make images access public by ther correct path
|
|
app.use("/public", express.static("public"));
|
|
|
|
app.get("/", (req, res) => {
|
|
res.json({ message: "hello from api" });
|
|
});
|
|
|
|
// app.use(verifyJWTToken); // verify jwt token in socket
|
|
|
|
// router
|
|
const router = require("./routes");
|
|
const db = require("./models/index.js");
|
|
const { initializeSocketIO } = require("./socket/index.js");
|
|
const ApiError = require("./utils/handler/ApiError.handler.js");
|
|
|
|
// api route
|
|
app.use("/api", router);
|
|
|
|
//port
|
|
const PORT = process.env.PORT || 8000;
|
|
// send back a 404 error for any unknown api request
|
|
app.use((req, res, next) => {
|
|
next(new ApiError(404, "Not found"));
|
|
});
|
|
|
|
// convert error to ApiError, if needed
|
|
app.use(errorConverter);
|
|
|
|
// handle error
|
|
app.use(errorHandler);
|
|
|
|
//server
|
|
initializeSocketIO(io);
|
|
db.sequelize
|
|
.sync({ force: false })
|
|
.then(() => {
|
|
console.log("Yes re-sync done!");
|
|
server.listen(PORT, () => {
|
|
// server.listen(PORT, IP, () => {
|
|
console.log(`Server is running on port ${PORT}`);
|
|
// console.log(`Server running at http://${IP}:${PORT}`);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
console.log("Error : ", err.message);
|
|
// process.exit(1);
|
|
});
|