-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
54 lines (51 loc) · 1.63 KB
/
index.js
File metadata and controls
54 lines (51 loc) · 1.63 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
import express from 'express';
import dotenv from 'dotenv/config';
import mongoDBConnect from './mongoDB/connection.js';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import cors from 'cors';
import userRoutes from './routes/user.js';
import chatRoutes from './routes/chat.js';
import messageRoutes from './routes/message.js';
import * as Server from 'socket.io';
const app = express();
const corsConfig = {
origin: process.env.BASE_URL,
credentials: true,
};
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors(corsConfig));
app.use('/', userRoutes);
app.use('/api/chat', chatRoutes);
app.use('/api/message', messageRoutes);
mongoose.set('strictQuery', false);
mongoDBConnect();
const server = app.listen(process.env.PORT, () => {
console.log(`Server Listening at PORT - ${process.env.PORT}`);
});
const io = new Server.Server(server, {
pingTimeout: 60000,
cors: {
origin:process.env.PORT,
},
});
io.on('connection', (socket) => {
socket.on('setup', (userData) => {
socket.join(userData.id);
socket.emit('connected');
});
socket.on('join room', (room) => {
socket.join(room);
});
socket.on('typing', (room) => socket.in(room).emit('typing'));
socket.on('stop typing', (room) => socket.in(room).emit('stop typing'));
socket.on('new message', (newMessageRecieve) => {
var chat = newMessageRecieve.chatId;
if (!chat.users) console.log('chats.users is not defined');
chat.users.forEach((user) => {
if (user._id == newMessageRecieve.sender._id) return;
socket.in(user._id).emit('message recieved', newMessageRecieve);
});
});
});