summaryrefslogtreecommitdiffstats
path: root/index.js
diff options
context:
space:
mode:
authorjdlugosz963 <jdlugosz963@gmail.com>2021-12-15 22:46:44 +0100
committerjdlugosz963 <jdlugosz963@gmail.com>2021-12-15 22:46:44 +0100
commita958abb1e08d7cf23829dc207a1cdd62344fd1a1 (patch)
treedfe2c1da603a16ffdc5b90579d448bd5494eea2d /index.js
downloadlom_socket-master.tar.gz
lom_socket-master.zip
very simple chat socketsHEADmaster
Diffstat (limited to 'index.js')
-rw-r--r--index.js83
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 @@
1const express = require("express");
2const app = express();
3const socket = require("socket.io");
4const cors = require("cors");
5const axios = require("axios");
6
7const port = 8001;
8
9app.use(express());
10app.use(cors());
11
12var server = app.listen(
13 port,
14 console.log(`Server is running on port: ${port} `)
15);
16
17const io = socket(server);
18
19io.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
46io.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});