binbin 框架有一个示例mmo项目,你可以看看有一些简单的逻辑思路的。
如果账号有多设备登录,意思就是他处有登录。
通常判断的切入点在帐号完成认证,登录到网关拿到帐号下的角色缓存信息后,准备进入地图前。
最简单的思路就是用网关上缓存的角色信息中的网关session,与当前的网关session进行比较。如果不一样,那说明有在其它设备有登录。
/Fantasy/examples/Communication-MMO-Examples/Server/Hotfix/Handler/C2G_EnterMapRequestHandler.cs
// role有另一个网关seesion信息,他处登录
if (gateAccount.SelectRoleId != 0 && gateRole.sessionRuntimeId != sessionRuntimeId)
{
// 他处角色顶下线
// 主要是给他处客户端发消息,退出游戏,这里不写了
}
你可以好好看看这个mmo示例的源码,一些mmo功能的应用需求,都有简单的思路逻辑。
更细的需求,复杂些的逻辑处理,可以自己把握。