-
Notifications
You must be signed in to change notification settings - Fork 0
/
server-1.mjs
67 lines (50 loc) · 1.82 KB
/
server-1.mjs
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
import { Redis } from "ioredis";
import { Server } from "socket.io";
import { createAdapter } from "@socket.io/redis-adapter";
import express from "express";
import { token } from "./token.mjs";
const app = express();
const serverport = 3011;
const server = app.listen(serverport);
const pubClient = new Redis({
host: "185.201.28.102",
port: 6379,
});
const subClient = pubClient.duplicate();
const socketByUserId = new Map();
const userBySocket = new WeakMap();
const io = new Server(server, {
adapter: createAdapter(pubClient, subClient),
});
io.on("connection", (socket) => {
const { authToken, userId } = socket.handshake.auth;
console.log(`${serverport} Пользователь ${userId} подключился`);
if (token !== authToken || !userId) {
socket.emitWithAck("unauthorized");
socket.disconnect();
console.log(
`${serverport} Пользователь ${userId} не был аутифицирован и был отключён`
);
return;
}
socketByUserId.set(userId, socket);
userBySocket.set(socket, { userId });
socket.on("disconnect", () => {
socketByUserId.delete(userId);
userBySocket.delete(socket);
io.emit(
"broadcast-message",
`Пользователь ${userId} отключился от кластера`
);
console.log(`${serverport} Пользователь ${userId} отключился`);
});
socket.emitWithAck("authorized");
io.emit("broadcast-message", `Пользователь ${userId} подключился к кластеру`);
console.log(`${serverport} Пользователь ${userId} авторизирован`);
// socket.on("message", (data) => {
// io.emit(
// "broadcast-message",
// `Пользователь ${userId} подключился к кластеру`
// );
// });
});