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
|
const express = require("express");
const app = express();
const socket = require("socket.io");
const cors = require("cors");
const axios = require("axios");
const port = 8001;
app.use(express());
app.use(cors());
var server = app.listen(
port,
console.log(`Server is running on port: ${port} `)
);
const io = socket(server);
io.use((socket, next) => {
let token = socket.handshake.auth.token;
let config = {
headers: {
Authorization: `Token ${token}`,
}
}
axios.get(
'http://127.0.0.1:8000/api/auth/info/',
config
)
.then((res) => {
if(res.status === 200) {
socket.userInfo = res.data.user;
socket._config = config;
socket.roomID = null;
next();
}
})
.catch(error => { });
return next(new Error("Invalid token"))
});
io.on("connection", (socket) => {
console.log(`${socket.userInfo.username}, connected!`);
socket.on('send_group_message', ({message, group}) => {
axios.post(
`http://127.0.0.1:8000/api/chat/groups/detail/${group.id}/messages/`,
{message: message},
socket._config
).then(res => {
res_message = res.data
user_message = {...res_message}
other_message = {...res_message}
user_message["is_mine"] = true
other_message["is_mine"] = false
socket.emit("receive_group_message", {message: user_message});
socket.broadcast.to(group.id).emit("receive_group_message", {message: other_message});
}).catch(err => { })
});
socket.on('join_group', ({group_id}) => {
axios.get(
`http://127.0.0.1:8000/api/chat/groups/detail/${group_id}/`,
socket._config
)
.then((res) => {
if(res.status === 200)
socket.join(group_id);
}).catch(error => { });
})
socket.on("disconnect", () => {
console.log(`${socket.userInfo.username} disconnected!`);
});
});
|