-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
111 lines (90 loc) · 2.77 KB
/
server.js
File metadata and controls
111 lines (90 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
require("dotenv").config();
const express = require("express");
const cookieParser = require("cookie-parser");
const morgan = require("morgan");
const passport = require("passport");
const moment = require("moment");
const helmet = require("helmet");
const PORT = process.env.PORT || 3001;
const app = express();
const http = require("http").Server(app);
const socketIO = require("socket.io")(http, {
cors: {
origin: "*"
}
});
const db = require("./server/models");
const scoreSeeds = require("./server/db/scoreSeeds");
app.use(cookieParser(process.env.AUTH_SECRET));
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
if (app.get("env") !== "test") {
app.use(morgan("dev")); // Hook up the HTTP logger
}
require("./server/config/passport")(db, app, passport); // pass passport for configuration
if (process.env.NODE_ENV === 'production') {
const path = require('path');
// console.log('YOU ARE IN THE PRODUCTION ENV');
app.use('/static', express.static(path.join(__dirname, './client/build/static')));
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, './client/build/'))
});
}
// Define our routes=
app.use("/api", require("./server/routes/apiRoutes")(passport, db));
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "./client/build/index.html"));
});
// Secure express app
app.use(
helmet.hsts({
maxAge: moment.duration(1, "years").asMilliseconds(),
})
);
// catch 404 and forward to error handler
if (app.get("env") !== "development") {
app.use((req, res, next) => {
const err = new Error("Not Found: " + req.url);
err.status = 404;
next(err);
});
}
const syncOptions = {
force: process.env.FORCE_SYNC === "true",
};
if (app.get("env") === "test") {
syncOptions.force = true;
}
socketIO.on("connection", function(socket) {
console.log("==================================");
console.log("A user connected");
console.log("==================================");
// Join a conversation
const { roomId } = socket.handshake.query;
socket.join(roomId);
// Listen for new messages
socket.on("newChatMessage", (data) => {
socketIO.in(roomId).emit("newChatMessage", data);
});
// Leave the room if the user closes the socket
socket.on("disconnect", () => {
socket.leave(roomId);
console.log("==================================");
console.log("A user disconnected");
console.log("==================================");
});
});
db.sequelize.sync(syncOptions).then(() => {
if (app.get("env") !== "test" && syncOptions.force) {
require("./server/db/scoreSeeds")(db);
}
db.Score.findAll().then((data) => {
if (data.length < 10) {
scoreSeeds(db);
}
});
http.listen(PORT, () => {
console.log(`App listening on port: ${PORT}`);
});
});
module.exports = app;