-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
161 lines (136 loc) · 4.48 KB
/
index.js
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
if (process.env.NODE_ENV !== "production") {
require("dotenv").config();
}
const faker = require("faker");
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
const path = require("path");
const mongoose = require("mongoose");
const socketio = require("socket.io");
//ROUTES
const ownerRoutes = require("./routes/owner");
const driverRoutes = require("./routes/driver");
const adminRoutes = require("./routes/admin");
const vehicleRoutes = require("./routes/vehicle");
//API_ROUTES
const apiRoutes = require("./routes/api");
const cors = require("cors");
const session = require("express-session");
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "views"));
// CORS Configuration
const corsOptions = {
origin:
process.env.NODE_ENV === "production"
? "https://your-production-domain.com" // Replace with your production domain
: ["http://localhost:5001", "http://localhost:3000"], // Add all your development domains
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allowedHeaders: ["Content-Type", "Authorization"],
credentials: true, // This is important for cookies/credentials
optionsSuccessStatus: 200,
};
app.use(cors(corsOptions));
app.use(express.static(path.join(__dirname, "public")));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
const sessionConfig = {
secret: "thisshouldbeabettersecret!",
resave: false,
saveUninitialized: true,
cookie: {
httpOnly: true,
expires: Date.now() + 1000 * 60 * 60 * 24 * 7,
maxAge: 1000 * 60 * 60 * 24 * 7,
},
};
app.use(session(sessionConfig));
//TESTING-ROUTES
// app.get("/", (req, res) => {
// res.render("driver/newMap");
// });
// Map Public view
app.get("/map", (req, res) => {
res.render("allMap", { env: process.env.MAP_BOX });
});
//MAIN-ROUTES
app.use("/api/v1/owner", ownerRoutes);
app.use("/api/v1/driver", driverRoutes);
app.use("/api/v1/admin", adminRoutes);
app.use("/api/v1/vehicle", vehicleRoutes);
//API_ROUTES
app.use("/himraahi/", apiRoutes);
//ROUTE TO HANDLE RANDOM URLS
app.all("*", (req, res, next) => {
next(res.render("error"));
});
// SERVER CONNECTION
mongoose
.connect(process.env.MONGODB_URI)
.then((result) => {
console.log("Database Connected!!");
const server = app.listen(port);
console.log("Listening on port :", port);
const io = socketio(server, { cors: { origin: "*" } });
io.on("connection", (socket) => {
console.log("client connected ");
// ========= CODE TO CHECK //////////
let data;
let data2;
setInterval(() => {
const latitude = parseFloat(faker.address.latitude());
const longitude = parseFloat(faker.address.longitude());
data = {
tripID: "677ad2da5251c28ae04ec8b2",
latitude: latitude,
longitude: longitude,
sourceLocation: "Mandi,HP",
destinationLocation: "Chandigarh",
viaLocation: "Via",
currentTime: new Date().toLocaleTimeString(),
};
console.log("veh 1 ", data.latitude, data.longitude);
if (
data &&
data.latitude >= -90 &&
data.latitude <= 90 &&
data.longitude >= -180 &&
data.longitude <= 180
)
socket.broadcast.emit("broadcastDriverData", data);
}, 20000);
setInterval(() => {
const latitude = parseFloat(faker.address.latitude());
const longitude = parseFloat(faker.address.longitude());
data2 = {
tripID: "677ad2da5251c28ae04ec8b2",
latitude: latitude,
longitude: longitude,
sourceLocation: "Kullu, H.P",
destinationLocation: "Shimla ,H.P",
viaLocation: "Via",
currentTime: new Date().toLocaleTimeString(),
};
console.log("veh 2 ", data2.latitude);
if (data2) socket.broadcast.emit("broadcastDriverData", data2);
}, 20000);
// ========= CODE TO CHECK ENDS //////////
// socket.on("driverData", async (data) => {
// // Broadcast data to all connected users (excluding the sender)
// console.log("inside driver event");
// console.log(
// "Driver_DATA",
// data,
// // data["longitude"],
// // data[latitude],
// JSON.parse(data)
// );
// setTimeout(() => {
// socket.broadcast.emit("broadcastDriverData", JSON.parse(data));
// }, 5000);
// });
});
})
.catch((err) => {
console.log(err);
});