6.Utm示例-公共部分

Utm示例-公共部分

 

首先实现各个事件(登录检查、登录、退出、断线)的处理

1.       登录检查:

继承com.dc.utm.handler.login.OnUserLoginCheckHandler类,实现抽象方法:

queueFull:队列满:在该方法中给前端发送信息提示服务器繁忙不受理该请求

loginCheck:登录检查:检查用户的信息是否正确等,如果错误或者不允许登录则给用户返回错误提示并在该方法返回null(程序不会再往下执行),如果通过检查则返回相应的User对象。

logoutLocalUserWhenUserReLogin:退出在服务上的老用户:当通过登录检查后,OnUserLoginCheckHandler就会调用UserFlagBusiness的setLoginFlag方法(该方法会返回成功、用户在本服务登录、用户在其他服务登录)(具体说明可以看该类说明,该类有个简单实现SimpleLocalUserFlagBusiness(仅用于单个服务,并不建议使用,详见UserFlagBusiness说明)),如果返回用户在本服务登录则会调用这个方法;在该方法需要退出在本服务登录的用户。

logoutRemoteUserWhenUserReLogin:退出在其他服务上登录的用户:通知其他服务退出该用户。

 

2.       登录:

继承com.dc.utm.handler.login. OnUserLoginHandler类,实现抽象方法:

loginLinkCheck:登录连接检查(在“Utm详细实现 ->用户生命流程 -> 用户登录 -> 详细流程”中已有说明):在服务上登录成功返回 true,登录失败返回false(可以参考sfs的实现和netty的实现)。

userLogin:用户登录成功:用户登录成功后的业务处理和 给前端返回登录成功。

 

3.       退出:

继承com.dc.utm.handler.logout.OnUserDisconectHandler类,实现抽象方法:

注:LogoutHandler 和OnUserDisconectHandler只有一个会被触发 (LogoutHandler后用户将认为是游客,其断线将不会触发OnUserDisconectHandler)

userLogout:用户退出:用户退出的业务处理和 给前端返回退出成功。

 

4.       断线:

继承com.dc.utm.handler.logout.OnUserDisconectHandler类,实现抽象方法:

注:LogoutHandler 和OnUserDisconectHandler只有一个会被触发 (LogoutHandler后用户将认为是游客,其断线将不会触发OnUserDisconectHandler)

userDisconect:用户断线:用户断线的业务处理。

 

 

 

然后需要实现用户退出线程(UserLogoutCheckBusiness)的抽象方法:

(用户登录时,如果该用户之前已经登录到服务上,则utm会等待老的用户退出后,才执行新的登录,由这个线程在查看老的用户是否登出,utm在UserFlagBusiness的setLoginFlag方法返回不成功时会自动将用户放入到该实例的等待处理用户中)

waitLogoutTimeOut:等待时间超过maxWaitLogoutTime毫秒,用户依然未从原来的服务上退出 (该方法主要是负责通知前端说登录失败)

 

 

 

接着是实例化utm:(sfs和netty实例化只有细微差别,这里给出sfs的示例):

 

1.       创建两个cmd对应处理器的Map,在后面我们会往其中加入处理器(在sfs中cmd只能是string类型)

//游客请求cmd

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值