Commit 9638dab2 authored by Vũ Gia Vương's avatar Vũ Gia Vương

add multi core

parent 1370eb19
......@@ -19,8 +19,10 @@ const socket_io_1 = require("socket.io");
const socket_1 = require("./socket");
const redis_adapter_1 = require("@socket.io/redis-adapter");
const redis_1 = require("redis");
const PORT = process.env.PORT || 3001;
const PORT = process.env.PORT || 6636;
const REDIS_URL = "redis://default:Myreview123@123a@127.0.0.1:6379";
// const REDIS_URL = "redis://127.0.0.1:6379";
const PATH = '/socketws/socket.io';
exports.redis = (0, redis_1.createClient)({ url: REDIS_URL });
function initRedis() {
return __awaiter(this, void 0, void 0, function* () {
......@@ -33,15 +35,10 @@ initRedis().catch(err => {
});
const server = http_1.default.createServer(server_1.default);
const io = new socket_io_1.Server(server, {
path: '/socket',
path: PATH,
cors: {
methods: ["GET", "POST"],
origin: [
"https://play.gamee.vn",
"https://dev.gamee.vn",
"http://localhost:7456"
],
credentials: true
origin: "*"
}
});
const pubClient = (0, redis_1.createClient)({ url: REDIS_URL });
......
......@@ -11,7 +11,7 @@ app.use(express_1.default.json());
app.get('/', (req, res, next) => {
res.send('Hello World');
});
// app.get('/socket', (req: Request, res: Response, next: NextFunction) => {
// res.send('socket')
// })
app.get('/socketws/dev', (req, res, next) => {
res.send('dev');
});
exports.default = app;
......@@ -40,26 +40,31 @@ const CONFIG = {
const TIME_EX = 24 * 60 * 60;
function setupSocket(io) {
return __awaiter(this, void 0, void 0, function* () {
try {
io.use((socket, next) => __awaiter(this, void 0, void 0, function* () {
io.use((socket, next) => __awaiter(this, void 0, void 0, function* () {
try {
const token = String(socket.handshake.query.token);
const userId = String(socket.handshake.query.userId);
if (!token || !userId) {
return;
}
const keys = yield _1.redis.keys("user:*");
console.log('keys', keys);
// const keys = await redis.keys("user:*");
// console.log('keys', keys)
const userJson = yield _1.redis.get(`user:${userId}`);
const user = userJson ? JSON.parse(userJson) : null;
const newUser = new User_1.default(user || { token, id: userId });
users.set(userId, newUser);
if (!user) {
yield _1.redis.set(`user:${userId}`, JSON.stringify(user));
yield _1.redis.expire(`user:${user.id}`, TIME_EX);
yield _1.redis.expire(`user:${userId}`, TIME_EX);
}
next();
}));
io.on("connection", (socket) => {
}
catch (error) {
console.log('error', error);
}
}));
io.on("connection", (socket) => {
try {
console.log(`🟢 Client connected: ${socket.id}`);
const userId = String(socket.handshake.query.userId);
const user = users.get(userId);
......@@ -68,11 +73,11 @@ function setupSocket(io) {
socket.on(CONFIG.EVT.HISTORY, () => __awaiter(this, void 0, void 0, function* () { return yield getHistory(socket, user); }));
socket.on(CONFIG.EVT.END_GAME, () => endGame(socket, user));
socket.on("disconnect", () => __awaiter(this, void 0, void 0, function* () { return yield onDisconnect(socket, user); }));
});
}
catch (error) {
console.log('error', error);
}
}
catch (error) {
console.log('error', error);
}
});
});
}
function endGame(socket, user) {
......@@ -173,7 +178,7 @@ function passTower(socket, data, user) {
else {
user.combo = 0;
}
user.totalScore += score;
user.totalScore += Math.max(score, 0);
const dataSocket = {
target,
score,
......
......@@ -5,8 +5,10 @@ import { setupSocket } from "./socket";
import { createAdapter } from "@socket.io/redis-adapter";
import { createClient } from "redis";
const PORT = process.env.PORT || 3001;
const PORT = process.env.PORT || 6636;
const REDIS_URL = "redis://default:Myreview123@123a@127.0.0.1:6379";
// const REDIS_URL = "redis://127.0.0.1:6379";
const PATH = '/socketws/socket.io';
export const redis = createClient({ url: REDIS_URL });
......@@ -22,15 +24,10 @@ initRedis().catch(err => {
const server = http.createServer(app);
const io = new Server(server, {
path: '/socket',
path: PATH,
cors: {
methods: ["GET", "POST"],
origin: [
"https://play.gamee.vn",
"https://dev.gamee.vn",
"http://localhost:7456"
],
credentials: true,
origin: "*"
}
});
......
......@@ -9,8 +9,9 @@ app.get('/', (req: Request, res: Response, next: NextFunction) => {
res.send('Hello World')
})
// app.get('/socket', (req: Request, res: Response, next: NextFunction) => {
// res.send('socket')
// })
app.get('/socketws/dev', (req: Request, res: Response, next: NextFunction) => {
res.send('dev')
})
export default app;
......@@ -30,16 +30,17 @@ const CONFIG = {
const TIME_EX = 24 * 60 * 60;
export async function setupSocket(io: Server) {
try {
io.use(async (socket: Socket, next) => {
io.use(async (socket: Socket, next) => {
try {
const token = String(socket.handshake.query.token);
const userId = String(socket.handshake.query.userId);
if (!token || !userId) {
return;
}
const keys = await redis.keys("user:*");
console.log('keys', keys)
// const keys = await redis.keys("user:*");
// console.log('keys', keys)
const userJson = await redis.get(`user:${userId}`);
const user = userJson ? JSON.parse(userJson) : null;
......@@ -48,12 +49,16 @@ export async function setupSocket(io: Server) {
if (!user) {
await redis.set(`user:${userId}`, JSON.stringify(user));
await redis.expire(`user:${user.id}`, TIME_EX);
await redis.expire(`user:${userId}`, TIME_EX);
}
next();
});
} catch (error) {
console.log('error', error)
}
});
io.on("connection", (socket: Socket) => {
io.on("connection", (socket: Socket) => {
try {
console.log(`🟢 Client connected: ${socket.id}`);
const userId = String(socket.handshake.query.userId);
const user = users.get(userId)!;
......@@ -65,10 +70,11 @@ export async function setupSocket(io: Server) {
socket.on(CONFIG.EVT.END_GAME, () => endGame(socket, user));
socket.on("disconnect", async () => await onDisconnect(socket, user));
});
} catch (error) {
console.log('error', error)
}
} catch (error) {
console.log('error', error)
}
});
}
async function endGame(socket: Socket, user: User) {
......@@ -171,7 +177,7 @@ async function passTower(socket: Socket, data: IRequestPassTower, user: User) {
user.combo = 0;
}
user.totalScore += score;
user.totalScore += Math.max(score, 0);
const dataSocket: IDataPassTower = {
target,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment