登陆:玩家在线情况redis改为hash格式
This commit is contained in:
@@ -16,6 +16,7 @@ import { comBtlRanges } from '../pubUtils/gamedata';
|
||||
export async function initAllRank() {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
const serverList = await GameModel.getAllServerList();
|
||||
await client.delAsync(REDIS_KEY.ONLINE_USERS);
|
||||
await client.delAsync(REDIS_KEY.USER_INFO);
|
||||
|
||||
await client.delAsync(REDIS_KEY.GUILD_INFO);
|
||||
@@ -362,12 +363,69 @@ export function redisSidKey(roleId: string) {
|
||||
return `login_roleId_${roleId}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家上线
|
||||
* @param roleId role表id
|
||||
* @param userCode user表唯一字符串标识
|
||||
* @param sid connector服的那个sid
|
||||
*/
|
||||
export async function roleLogin(roleId: string, userCode: string, sid: string) {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
let param = { userCode, sid };
|
||||
return await client.hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, JSON.stringify(param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家下线
|
||||
* @param roleId role表id
|
||||
*/
|
||||
export async function roleLeave(roleId: string) {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
return await client.hdelAsync(REDIS_KEY.ONLINE_USERS, roleId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断玩家是否在线
|
||||
* @param roleId role表id
|
||||
*/
|
||||
export async function isRoleOnline(roleId: string) {
|
||||
let key = redisSidKey(roleId);
|
||||
let result = await getRedis(key);
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
let result = await client.hexistsAsync(REDIS_KEY.ONLINE_USERS, roleId);
|
||||
return !!result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得在线玩家userCode和sid
|
||||
* @param roleId
|
||||
*/
|
||||
export async function getRoleOnlineInfo(roleId: string) {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
let str = await client.hgetAsync(REDIS_KEY.ONLINE_USERS, roleId);
|
||||
if(str) {
|
||||
try {
|
||||
let result = JSON.parse(str);
|
||||
return {
|
||||
isOnline: true,
|
||||
userCode: result.userCode,
|
||||
sid: result.sid
|
||||
}
|
||||
} catch(e) {
|
||||
return { isOnline: false }
|
||||
}
|
||||
} else {
|
||||
return { isOnline: false }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得所有在线的玩家
|
||||
*/
|
||||
export async function getAllOnlineRoles() {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
let allRoles = await client.hgetallAsync(REDIS_KEY.ONLINE_USERS);
|
||||
return allRoles;
|
||||
}
|
||||
|
||||
export async function resetPvpRanks() {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
await client.delAsync(REDIS_KEY.PVP_RANK);
|
||||
|
||||
Reference in New Issue
Block a user