Skip to content

Commit a668ae7

Browse files
committed
Redis
1 parent 986daa5 commit a668ae7

File tree

8 files changed

+363
-3778
lines changed

8 files changed

+363
-3778
lines changed

Server/lib/Game/kkutu.js

+90-101
Original file line numberDiff line numberDiff line change
@@ -399,86 +399,79 @@ exports.Client = function(socket, profile, sid){
399399
my.flush(my.box, my.equip);
400400
}
401401
};
402-
my.refresh = function(){
403-
return new Promise(async (resolve) => {
404-
if(my.guest){
405-
my.equip = {};
406-
my.data = new exports.Data();
407-
my.money = 0;
408-
my.friends = {};
409-
410-
resolve({ result: 200 });
411-
}else{
412-
const $user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User();
413-
var first = !$user._id;
414-
var black = first ? "" : $user.black;
415-
/* Enhanced User Block System [S] */
416-
const blockedUntil = (first || !$user.blockedUntil) ? null : $user.blockedUntil;
417-
/* Enhanced User Block System [E] */
402+
my.refresh = async function(){
403+
if(my.guest){
404+
my.equip = {};
405+
my.data = new exports.Data();
406+
my.money = 0;
407+
my.friends = {};
408+
409+
return { result: 200 };
410+
}else{
411+
const $user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User();
412+
var first = !$user._id;
413+
var black = first ? "" : $user.black;
414+
/* Enhanced User Block System [S] */
415+
const blockedUntil = (first || !$user.blockedUntil) ? null : $user.blockedUntil;
416+
/* Enhanced User Block System [E] */
418417

419-
if(black == "null") black = false;
420-
if(black == "chat"){
421-
black = false;
422-
my.noChat = true;
423-
}
424-
/* 망할 셧다운제
425-
if(Cluster.isMaster && !my.isAjae){ // null일 수는 없다.
426-
my.isAjae = Ajae.checkAjae(($user.birthday || "").split('-'));
427-
if(my.isAjae === null){
428-
if(my._birth) my._checkAjae = setTimeout(function(){
429-
my.sendError(442);
430-
my.socket.close();
431-
}, 300000);
432-
else{
433-
my.sendError(441);
434-
my.socket.close();
435-
return;
436-
}
418+
if(black == "null") black = false;
419+
if(black == "chat"){
420+
black = false;
421+
my.noChat = true;
422+
}
423+
/* 망할 셧다운제
424+
if(Cluster.isMaster && !my.isAjae){ // null일 수는 없다.
425+
my.isAjae = Ajae.checkAjae(($user.birthday || "").split('-'));
426+
if(my.isAjae === null){
427+
if(my._birth) my._checkAjae = setTimeout(function(){
428+
my.sendError(442);
429+
my.socket.close();
430+
}, 300000);
431+
else{
432+
my.sendError(441);
433+
my.socket.close();
434+
return;
437435
}
438-
}*/
439-
my.exordial = $user.exordial || "";
440-
my.equip = $user.equip || {};
441-
my.box = $user.box || {};
442-
my.data = new exports.Data($user.kkutu);
443-
my.money = Number($user.money);
444-
my.friends = $user.friends || {};
445-
if(first) my.flush();
446-
else{
447-
my.checkExpire();
448-
my.okgCount = Math.floor((my.data.playTime || 0) / PER_OKG);
449436
}
450-
/* Enhanced User Block System [S] */
451-
if(black){
452-
if(blockedUntil) resolve({ result: 444, black: black, blockedUntil: blockedUntil });
453-
else resolve({ result: 444, black: black });
454-
}
455-
/* Enhanced User Block System [E] */
456-
else if(Cluster.isMaster && $user.server) resolve({ result: 409, black: $user.server });
457-
else if(exports.NIGHT && my.isAjae === false) resolve({ result: 440 });
458-
else resolve({ result: 200 });
459-
};
460-
});
437+
}*/
438+
my.exordial = $user.exordial || "";
439+
my.equip = $user.equip || {};
440+
my.box = $user.box || {};
441+
my.data = new exports.Data($user.kkutu);
442+
my.money = Number($user.money);
443+
my.friends = $user.friends || {};
444+
if(first) my.flush();
445+
else{
446+
my.checkExpire();
447+
my.okgCount = Math.floor((my.data.playTime || 0) / PER_OKG);
448+
}
449+
/* Enhanced User Block System [S] */
450+
if(black){
451+
if(blockedUntil) return { result: 444, black: black, blockedUntil: blockedUntil };
452+
else return { result: 444, black: black };
453+
}
454+
/* Enhanced User Block System [E] */
455+
else if(Cluster.isMaster && $user.server) return { result: 409, black: $user.server };
456+
else if(exports.NIGHT && my.isAjae === false) return { result: 440 };
457+
else return { result: 200 };
458+
};
461459
};
462-
my.flush = function(box, equip, friends){
463-
return new Promise(async (resolve) => {
464-
if(my.guest) return resolve({ id: my.id, prev: 0 });
465-
466-
const user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User(my.id);
467-
user.money = isNaN(my.money) ? undefined : my.money;
468-
user.kkutu = my.data && !isNaN(my.data.score) ? my.data : undefined;
469-
user.box = my.box || undefined;
470-
user.equip = my.equip || undefined;
471-
user.friends = my.friends || undefined;
472-
console.log(my)
473-
DB.users.save(user).then(() => {
474-
DB.redis.getGlobal(my.id).then(function(_res){
475-
DB.redis.putGlobal(my.id, my.data.score).then(function(res){
476-
JLog.log(`FLUSHED [${my.id}] PTS=${my.data.score} MNY=${my.money}`);
477-
resolve({ id: my.id, prev: _res });
478-
});
479-
});
480-
});
481-
});
460+
my.flush = async function(box, equip, friends){
461+
if(my.guest) return { id: my.id, prev: 0 };
462+
463+
const user = (await DB.users.findOne({ where: { _id: my.id } })) || new DB.User(my.id);
464+
user.money = isNaN(my.money) ? undefined : my.money;
465+
user.kkutu = my.data && !isNaN(my.data.score) ? my.data : undefined;
466+
user.box = my.box || undefined;
467+
user.equip = my.equip || undefined;
468+
user.friends = my.friends || undefined;
469+
await DB.users.save(user);
470+
471+
const prev = await DB.redis.getGlobal(my.id);
472+
await DB.redis.putGlobal(my.id, my.data.score);
473+
JLog.log(`FLUSHED [${my.id}] PTS=${my.data.score} MNY=${my.money}`);
474+
return { id: my.id, prev };
482475
};
483476
my.invokeWordPiece = function(text, coef){
484477
if(!my.game.wpc) return;
@@ -1072,7 +1065,7 @@ exports.Room = function(room, channel){
10721065
my.start();
10731066
}else DIC[my.master].sendError(412);
10741067
};
1075-
my.start = function(pracLevel){
1068+
my.start = async function(pracLevel){
10761069
var i, j, o, hum = 0;
10771070
var now = (new Date()).getTime();
10781071

@@ -1124,11 +1117,9 @@ exports.Room = function(room, channel){
11241117
o.game.wpc = [];
11251118
}
11261119
my.game.hum = hum;
1127-
my.getTitle().then(function(title){
1128-
my.game.title = title;
1129-
my.export();
1130-
setTimeout(my.roundReady, 2000);
1131-
});
1120+
my.game.title = await my.getTitle();
1121+
my.export();
1122+
setTimeout(my.roundReady, 2000);
11321123
my.byMaster('starting', { target: my.id });
11331124
delete my._avTeam;
11341125
delete my._teams;
@@ -1145,7 +1136,7 @@ exports.Room = function(room, channel){
11451136
clearTimeout(my.game.hintTimer2);
11461137
clearTimeout(my.game.qTimer);
11471138
};
1148-
my.roundEnd = function(data){
1139+
my.roundEnd = async function(data){
11491140
var i, o, rw;
11501141
var res = [];
11511142
var users = {};
@@ -1215,25 +1206,23 @@ exports.Room = function(room, channel){
12151206

12161207
suv.push(o.flush(true));
12171208
}
1218-
Promise.all(suv).then(function(uds){
1219-
var o = {};
1209+
const uds = await Promise.all(suv);
1210+
var o = {};
1211+
1212+
suv = [];
1213+
for(i in uds){
1214+
o[uds[i].id] = { prev: uds[i].prev };
1215+
suv.push(DB.redis.getSurround(uds[i].id));
1216+
}
1217+
const ranks = await Promise.all(suv);
1218+
var i, j;
1219+
1220+
for(i in ranks){
1221+
if(!o[ranks[i].target]) continue;
12201222

1221-
suv = [];
1222-
for(i in uds){
1223-
o[uds[i].id] = { prev: uds[i].prev };
1224-
suv.push(DB.redis.getSurround(uds[i].id));
1225-
}
1226-
Promise.all(suv).then(function(ranks){
1227-
var i, j;
1228-
1229-
for(i in ranks){
1230-
if(!o[ranks[i].target]) continue;
1231-
1232-
o[ranks[i].target].list = ranks[i].data;
1233-
}
1234-
my.byMaster('roundEnd', { result: res, users: users, ranks: o, data: data }, true);
1235-
});
1236-
});
1223+
o[ranks[i].target].list = ranks[i].data;
1224+
}
1225+
my.byMaster('roundEnd', { result: res, users: users, ranks: o, data: data }, true);
12371226
my.gaming = false;
12381227
my.export();
12391228
delete my.game.seq;

Server/lib/Game/master.js

+45-46
Original file line numberDiff line numberDiff line change
@@ -439,57 +439,56 @@ exports.init = function(_SID, CHAN){
439439
$c.socket.close();
440440
return;
441441
}
442-
$c.refresh().then(async function(ref){
443-
/* Enhanced User Block System [S] */
444-
let isBlockRelease = false;
445-
446-
if(ref.blockedUntil < Date.now()) {
447-
DIC[$c.id] = $c;
448-
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
449-
user.blockedUntil = 0;
450-
user.black = null;
442+
const ref = await $c.refresh();
443+
/* Enhanced User Block System [S] */
444+
let isBlockRelease = false;
445+
446+
if(ref.blockedUntil < Date.now()) {
447+
DIC[$c.id] = $c;
448+
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
449+
user.blockedUntil = 0;
450+
user.black = null;
451+
await MainDB.users.save(user);
452+
JLog.info(`사용자 #${$c.id}의 이용제한이 해제되었습니다.`);
453+
isBlockRelease = true;
454+
}
455+
/* Enhanced User Block System [E] */
456+
457+
/* Enhanced User Block System [S] */
458+
if(ref.result == 200 || isBlockRelease){
459+
/* Enhanced User Block System [E] */
460+
DIC[$c.id] = $c;
461+
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
462+
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
463+
if(user){
464+
user.server = SID;
451465
await MainDB.users.save(user);
452-
JLog.info(`사용자 #${$c.id}의 이용제한이 해제되었습니다.`);
453-
isBlockRelease = true;
454466
}
455-
/* Enhanced User Block System [E] */
456-
457-
/* Enhanced User Block System [S] */
458-
if(ref.result == 200 || isBlockRelease){
459-
/* Enhanced User Block System [E] */
460-
DIC[$c.id] = $c;
461-
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
462-
const user = await MainDB.users.findOne({ where: { _id: $c.id } });
463-
if(user){
464-
user.server = SID;
465-
await MainDB.users.save(user);
466-
}
467-
468-
if (($c.guest && GLOBAL.GOOGLE_RECAPTCHA_TO_GUEST) || GLOBAL.GOOGLE_RECAPTCHA_TO_USER) {
469-
$c.socket.send(JSON.stringify({
470-
type: 'recaptcha',
471-
siteKey: GLOBAL.GOOGLE_RECAPTCHA_SITE_KEY
472-
}));
473-
} else {
474-
$c.passRecaptcha = true;
475467

476-
joinNewUser($c);
477-
}
468+
if (($c.guest && GLOBAL.GOOGLE_RECAPTCHA_TO_GUEST) || GLOBAL.GOOGLE_RECAPTCHA_TO_USER) {
469+
$c.socket.send(JSON.stringify({
470+
type: 'recaptcha',
471+
siteKey: GLOBAL.GOOGLE_RECAPTCHA_SITE_KEY
472+
}));
478473
} else {
479-
/* Enhanced User Block System [S] */
480-
if(ref.blockedUntil) $c.send('error', {
481-
code: ref.result, message: ref.black, blockedUntil: ref.blockedUntil
482-
});
483-
else $c.send('error', {
484-
code: ref.result, message: ref.black
485-
});
486-
/* Enhanced User Block System [E] */
487-
488-
$c._error = ref.result;
489-
$c.socket.close();
490-
// JLog.info("Black user #" + $c.id);
474+
$c.passRecaptcha = true;
475+
476+
joinNewUser($c);
491477
}
492-
});
478+
} else {
479+
/* Enhanced User Block System [S] */
480+
if(ref.blockedUntil) $c.send('error', {
481+
code: ref.result, message: ref.black, blockedUntil: ref.blockedUntil
482+
});
483+
else $c.send('error', {
484+
code: ref.result, message: ref.black
485+
});
486+
/* Enhanced User Block System [E] */
487+
488+
$c._error = ref.result;
489+
$c.socket.close();
490+
// JLog.info("Black user #" + $c.id);
491+
}
493492
});
494493
Server.on('error', function (err) {
495494
JLog.warn("Error on ws: " + err.toString());

Server/lib/Game/slave.js

+17-18
Original file line numberDiff line numberDiff line change
@@ -157,26 +157,25 @@ Server.on('connection', async function(socket, info){
157157
$c.socket.close();
158158
return;
159159
}
160-
$c.refresh().then(function(ref){
161-
if(ref.result == 200){
162-
DIC[$c.id] = $c;
163-
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
164-
165-
$c.enter(room, reserve.spec, reserve.pass);
166-
if($c.place == room.id){
167-
$c.publish('connRoom', { user: $c.getData() });
168-
}else{ // 입장 실패
169-
$c.socket.close();
170-
}
171-
JLog.info(`Chan @${CHAN} New #${$c.id}`);
172-
}else{
173-
$c.send('error', {
174-
code: ref.result, message: ref.black
175-
});
176-
$c._error = ref.result;
160+
const ref = await $c.refresh();
161+
if(ref.result == 200){
162+
DIC[$c.id] = $c;
163+
DNAME[($c.profile.title || $c.profile.name).replace(/\s/g, "")] = $c.id;
164+
165+
$c.enter(room, reserve.spec, reserve.pass);
166+
if($c.place == room.id){
167+
$c.publish('connRoom', { user: $c.getData() });
168+
}else{ // 입장 실패
177169
$c.socket.close();
178170
}
179-
});
171+
JLog.info(`Chan @${CHAN} New #${$c.id}`);
172+
}else{
173+
$c.send('error', {
174+
code: ref.result, message: ref.black
175+
});
176+
$c._error = ref.result;
177+
$c.socket.close();
178+
}
180179
});
181180
Server.on('error', function(err){
182181
JLog.warn("Error on ws: " + err.toString());

0 commit comments

Comments
 (0)