|
@@ -13,7 +13,7 @@ const Uuid = require('uuid'); //lib for unic id generate
|
|
const fileupload = require('express-fileupload');
|
|
const fileupload = require('express-fileupload');
|
|
const fs = require('fs');
|
|
const fs = require('fs');
|
|
|
|
|
|
-
|
|
|
|
|
|
+const ORIGIN_URL = process.env.REACT_APP_BASE_URL
|
|
|
|
|
|
const server = http.createServer(app);
|
|
const server = http.createServer(app);
|
|
app.use(cors());
|
|
app.use(cors());
|
|
@@ -22,9 +22,7 @@ app.use(fileupload())
|
|
app.use(express.static('avatars')); //folder for static files
|
|
app.use(express.static('avatars')); //folder for static files
|
|
|
|
|
|
const io = require("socket.io")(server, {
|
|
const io = require("socket.io")(server, {
|
|
- cors: {
|
|
|
|
- origin: "http://192.168.0.107:3000" //client endpoint and port
|
|
|
|
- }
|
|
|
|
|
|
+ cors: ORIGIN_URL
|
|
});
|
|
});
|
|
const PORT = process.env.PORT || 5000;
|
|
const PORT = process.env.PORT || 5000;
|
|
const TOKEN_KEY = process.env.TOKEN_KEY || 'rGH4r@3DKOg06hgj';
|
|
const TOKEN_KEY = process.env.TOKEN_KEY || 'rGH4r@3DKOg06hgj';
|
|
@@ -56,8 +54,6 @@ const getOneUser = async (userName) => {
|
|
return userInDb;
|
|
return userInDb;
|
|
}
|
|
}
|
|
app.post('/login', async (req, res) => {
|
|
app.post('/login', async (req, res) => {
|
|
-
|
|
|
|
-
|
|
|
|
try {
|
|
try {
|
|
const {userName,password} = req.body;
|
|
const {userName,password} = req.body;
|
|
if (!isValidUserName(userName)){
|
|
if (!isValidUserName(userName)){
|
|
@@ -219,7 +215,7 @@ io.use( async (socket, next) => {
|
|
const userName = user.userName;
|
|
const userName = user.userName;
|
|
const dbUser = await getOneUser(userName);
|
|
const dbUser = await getOneUser(userName);
|
|
|
|
|
|
- if(dbUser.isBanned){
|
|
|
|
|
|
+ if(dbUser && dbUser.isBanned){
|
|
socket.disconnect();
|
|
socket.disconnect();
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -243,9 +239,17 @@ io.on("connection", async (socket) => {
|
|
const userName = socket.user.userName;
|
|
const userName = socket.user.userName;
|
|
const sockets = await io.fetchSockets();
|
|
const sockets = await io.fetchSockets();
|
|
const dbUser = await getOneUser(userName);
|
|
const dbUser = await getOneUser(userName);
|
|
|
|
+ const exist = sockets.find(current => current.user.userName == socket.user.userName)
|
|
|
|
+ const usersOnline = sockets.map(sock => sock.user)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ const usersOnlineID = usersOnline.map(users => Object.values(users)[0])
|
|
|
|
+ const userSet = new Set(usersOnlineID)
|
|
|
|
|
|
|
|
+ console.log(userSet)
|
|
|
|
|
|
- io.emit('usersOnline', sockets.map(sock => sock.user)); // send array online users
|
|
|
|
|
|
+
|
|
|
|
+ io.emit('usersOnline', usersOnline); // send array online users
|
|
|
|
|
|
socket.emit('connected', dbUser); //socket.user
|
|
socket.emit('connected', dbUser); //socket.user
|
|
|
|
|
|
@@ -255,6 +259,7 @@ io.on("connection", async (socket) => {
|
|
|
|
|
|
const messagesToShow = await Message.find({}).sort({ 'createDate': -1 }).limit(20).populate( {path:'user'});
|
|
const messagesToShow = await Message.find({}).sort({ 'createDate': -1 }).limit(20).populate( {path:'user'});
|
|
socket.emit('allmessages', messagesToShow.reverse());
|
|
socket.emit('allmessages', messagesToShow.reverse());
|
|
|
|
+
|
|
socket.on("message", async (data) => {
|
|
socket.on("message", async (data) => {
|
|
const dateNow = Date.now(); // for correct working latest post
|
|
const dateNow = Date.now(); // for correct working latest post
|
|
const post = await Message.findOne({userName}).sort({ 'createDate': -1 })
|
|
const post = await Message.findOne({userName}).sort({ 'createDate': -1 })
|
|
@@ -295,9 +300,19 @@ io.on("connection", async (socket) => {
|
|
|
|
|
|
try {
|
|
try {
|
|
socket.on("disconnect", async () => {
|
|
socket.on("disconnect", async () => {
|
|
- const sockets = await io.fetchSockets();
|
|
|
|
- io.emit('usersOnline', sockets.map(sock => sock.user));
|
|
|
|
- console.log(`user :${socket.user.userName} , disconnected to socket`);
|
|
|
|
|
|
+
|
|
|
|
+ const exist = sockets.find(current => current.user.userName == socket.user.userName)
|
|
|
|
+ const usersOnline = sockets.map(sock => sock.user)
|
|
|
|
+
|
|
|
|
+ const filteredUsersOnline = usersOnline.filter(user => exist.user.id !== user.id)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ socket.emit('usersOnline', filteredUsersOnline);
|
|
|
|
+
|
|
|
|
+ // const sockets = await io.fetchSockets();
|
|
|
|
+ // io.emit('usersOnline', sockets.map(sock => sock.user));
|
|
|
|
+ console.log(`user :${socket.user.userName} , disconnected to socket`);
|
|
|
|
+
|
|
});
|
|
});
|
|
console.log(`user :${socket.user.userName} , connected to socket`);
|
|
console.log(`user :${socket.user.userName} , connected to socket`);
|
|
socket.on("muteUser",async (data) => {
|
|
socket.on("muteUser",async (data) => {
|
|
@@ -317,6 +332,13 @@ io.on("connection", async (socket) => {
|
|
}
|
|
}
|
|
// }
|
|
// }
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ socket.on('privat', (data) => {
|
|
|
|
+ console.log(data)
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
socket.on("banUser",async (data) => {
|
|
socket.on("banUser",async (data) => {
|
|
if(!socket.user.isAdmin){
|
|
if(!socket.user.isAdmin){
|
|
@@ -387,6 +409,12 @@ const start = async () => {
|
|
try {
|
|
try {
|
|
await mongoose.connect('mongodb://localhost:27017/chat')
|
|
await mongoose.connect('mongodb://localhost:27017/chat')
|
|
.then(() => console.log(`DB started`))
|
|
.then(() => console.log(`DB started`))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // await mongoose
|
|
|
|
+ // .connect('mongodb+srv://serg1557733:1557733@cluster0.p9ltitx.mongodb.net/?retryWrites=true&w=majority')
|
|
|
|
+ // .then(() => console.log(`DB started`))
|
|
|
|
+
|
|
server.listen(PORT, () => {
|
|
server.listen(PORT, () => {
|
|
console.log(`Server started. Port: ${PORT}`);
|
|
console.log(`Server started. Port: ${PORT}`);
|
|
})
|
|
})
|
|
@@ -394,5 +422,4 @@ const start = async () => {
|
|
console.log(e);
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
start();
|
|
start();
|