Fantasy中玩家断线的检测
1.玩家登录成功后,就立马添加一个组件即可,掉线后,将会触发组件的Destroy方法
public class LoginGateRequestHandler : MessageRPC<LoginGateReqest, LoginGateResponse>
{
protected override async FTask Run(Session session, LoginGateReqest request, LoginGateResponse response,
Action reply)
{
...
//挂载监听Session断开组件,用户处理客户端断开的逻辑
var sessionComponent = session.AddComponent<SessionDisposeCompoent>();
sessionComponent.accountId = request.accountid;
...
}
}
2.掉线的处理。 这样子就可以通知其它的模块进行掉线处理了
public class SessionDisposeCompoentSystemDestroy : DestroySystem<SessionDisposeCompoent>
{
protected override void Destroy(SessionDisposeCompoent self)
{
Log.Info("SessionDisposeCompoentSystemDestroy" + self.accountId);
//队伍玩家断线处理
var teamComponent = self.Scene.GetComponent<TeamManagerComponent>();
teamComponent.PlayerDisConnect(self.accountId);
//处理玩家断线
var hallPlayerComponent = self.Scene.GetComponent<HallPlayerManagerComponent>();
hallPlayerComponent.PlayerDisConnect(self.accountId);
}
}
网络几个要素
1.网络连上 OK 发送登录协议后,需要登录到其它模块进程上。
2.发过来消息 OK
3.断开 OK 使用组件
4.异常处理 OK 也是可以加try catch的