diff options
author | jdlugosz963 <jdlugosz963@gmail.com> | 2021-12-15 22:46:44 +0100 |
---|---|---|
committer | jdlugosz963 <jdlugosz963@gmail.com> | 2021-12-15 22:46:44 +0100 |
commit | a958abb1e08d7cf23829dc207a1cdd62344fd1a1 (patch) | |
tree | dfe2c1da603a16ffdc5b90579d448bd5494eea2d /index.js | |
download | lom_socket-master.tar.gz lom_socket-master.zip |
Diffstat (limited to 'index.js')
-rw-r--r-- | index.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/index.js b/index.js new file mode 100644 index 0000000..a717a41 --- /dev/null +++ b/index.js | |||
@@ -0,0 +1,83 @@ | |||
1 | const express = require("express"); | ||
2 | const app = express(); | ||
3 | const socket = require("socket.io"); | ||
4 | const cors = require("cors"); | ||
5 | const axios = require("axios"); | ||
6 | |||
7 | const port = 8001; | ||
8 | |||
9 | app.use(express()); | ||
10 | app.use(cors()); | ||
11 | |||
12 | var server = app.listen( | ||
13 | port, | ||
14 | console.log(`Server is running on port: ${port} `) | ||
15 | ); | ||
16 | |||
17 | const io = socket(server); | ||
18 | |||
19 | io.use((socket, next) => { | ||
20 | let token = socket.handshake.auth.token; | ||
21 | |||
22 | let config = { | ||
23 | headers: { | ||
24 | Authorization: `Token ${token}`, | ||
25 | } | ||
26 | } | ||
27 | |||
28 | axios.get( | ||
29 | 'http://127.0.0.1:8000/api/auth/info/', | ||
30 | config | ||
31 | ) | ||
32 | .then((res) => { | ||
33 | if(res.status === 200) { | ||
34 | socket.userInfo = res.data.user; | ||
35 | socket._config = config; | ||
36 | socket.roomID = null; | ||
37 | next(); | ||
38 | } | ||
39 | }) | ||
40 | .catch(error => { }); | ||
41 | |||
42 | return next(new Error("Invalid token")) | ||
43 | }); | ||
44 | |||
45 | |||
46 | io.on("connection", (socket) => { | ||
47 | console.log(`${socket.userInfo.username}, connected!`); | ||
48 | |||
49 | socket.on('send_group_message', ({message, group}) => { | ||
50 | axios.post( | ||
51 | `http://127.0.0.1:8000/api/chat/groups/detail/${group.id}/messages/`, | ||
52 | {message: message}, | ||
53 | socket._config | ||
54 | ).then(res => { | ||
55 | res_message = res.data | ||
56 | |||
57 | user_message = {...res_message} | ||
58 | other_message = {...res_message} | ||
59 | |||
60 | user_message["is_mine"] = true | ||
61 | other_message["is_mine"] = false | ||
62 | |||
63 | socket.emit("receive_group_message", {message: user_message}); | ||
64 | socket.broadcast.to(group.id).emit("receive_group_message", {message: other_message}); | ||
65 | }).catch(err => { }) | ||
66 | }); | ||
67 | |||
68 | socket.on('join_group', ({group_id}) => { | ||
69 | axios.get( | ||
70 | `http://127.0.0.1:8000/api/chat/groups/detail/${group_id}/`, | ||
71 | socket._config | ||
72 | ) | ||
73 | .then((res) => { | ||
74 | if(res.status === 200) | ||
75 | socket.join(group_id); | ||
76 | }).catch(error => { }); | ||
77 | }) | ||
78 | |||
79 | |||
80 | socket.on("disconnect", () => { | ||
81 | console.log(`${socket.userInfo.username} disconnected!`); | ||
82 | }); | ||
83 | }); | ||