当前位置: 首页 > article >正文

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的


http://www.kler.cn/a/394366.html

相关文章:

  • 【IC每日一题:IC常用模块--RR/handshake/gray2bin】
  • Zookeeper的安装与使用
  • 在JPA和EJB中用乐观锁解决并发问题
  • docker构建jdk11
  • 认识一下Unicorn
  • WordPress HTTPS 配置问题解决方案
  • C语言的内存函数
  • 【LeetCode】【算法】538. 把二叉搜索树转换为累加树
  • 【IC每日一题:IC常用模块--RR/handshake/gray2bin】
  • SSH是 struts+spring+hibernate集成框架
  • 政务数据治理专栏开搞!
  • 浏览器是加载ES6模块的?
  • 探秘 RPC:揭开远程过程调用的实现原理
  • QTcpSocket 服务端和客户端
  • 深入理解BERT模型配置:BertConfig类详解
  • 大数据学习14之Scala面向对象--至简原则
  • uniapp中webview全屏不显示导航栏解决方案
  • 【SSL-RL】自监督强化学习: 好奇心驱动探索 (CDE)算法
  • Android OpenGL ES详解——几何着色器
  • LeetCode39:组合总和
  • UE5-----MenuSystem
  • Python教程笔记(2)
  • hive 统计各项目下排名前5的问题种类
  • 自动驾驶合集(更新中)
  • css3D变换用法
  • Java中的排序算法:探索与比较