美文网首页
netty的通道建立与关闭流程

netty的通道建立与关闭流程

作者: 天草二十六_简村人 | 来源:发表于2022-10-17 21:05 被阅读0次

一、建立通道

image.png
  • 客户端的请求登录
  • 服务端的处理登录(和http登录接口类似)

二、关闭通道

image.png

三、事件触发器

3.1、ClientHandler

@Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent) {
            IdleStateEvent idleStateEvent = (IdleStateEvent) evt;
            if (idleStateEvent.state() == IdleState.WRITER_IDLE) {
                ProtobufData.Task pingPack = TaskPackage.heartBeatPing();
                ctx.channel().writeAndFlush(pingPack);
            }
        }
        super.userEventTriggered(ctx, evt);
    }

3.2、NettyServerHandler

@Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent) {
            IdleStateEvent idleStateEvent = (IdleStateEvent) evt;

            if (idleStateEvent.state() == IdleState.READER_IDLE && ctx.channel().hasAttr(ChannelSessionManager.SESSION)) {
                UserInfo userInfo = ChannelSessionManager.getChannelSession(ctx.channel(), UserInfo.class);
                String roomId = userInfo.getAppKey() + Constants.ROOM_SEPARATOR_WORD + userInfo.getRoomId();
                String userId = userInfo.getUserId();
                cleanChannel(roomId, userId, ctx.channel().id());
            }
        }
        ctx.channel().close();

        super.userEventTriggered(ctx, evt);
    }

四、异常事件

@Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        ctx.channel().close();
    }

相关文章

  • netty的通道建立与关闭流程

    一、建立通道 客户端的请求登录 服务端的处理登录(和http登录接口类似) 二、关闭通道 三、事件触发器 3.1、...

  • netty优雅关闭channel通道

    channel != null 通道不能为空!channel.isActive() 通道不能是活跃状态的!chan...

  • Netty 源码解析 ——— Netty 优雅关闭流程

    本文是Netty文集中“Netty 源码解析”系列的文章。主要对Netty的重要流程以及类进行源码解析,以使得我们...

  • okhttp源码分析

    1. 项目结构 拦截器 连接池 线程池 2.执行流程图 2.1代码执行流程 2.2 正常流程 通道建立与安全dns...

  • 闪电网络核心--HTLC简介

    无论是单向支付通道和RSMC双向支付通道,交易双方都需要一个建立通道和关闭通道的过程,这对于需要频繁持续进行交易支...

  • 通道关闭

    昨天跑步打卡,自信满满的认为时间够用,结果点上传和24:00同时出现,通道关闭,看着手机上关闭通道的提示,心中的懊...

  • (极客时间)rpc重试、关闭与重启

    1、rpc的重试 重试机制流程图 2、rpc的关闭与重启 关闭的流程图 重启顺序

  • Spark RPC之Netty启动

    以Master启动netty为例,流程如下 netty的封装 spark对netty做了封装,在spark-net...

  • 通道

    channel通道 关闭通道和通道上范围循环 缓冲通道 定向通道 time包中的通道相关函数 select语句 C...

  • Netty源码(二)线程模型EventLoop

    前言 Netty源码(一)Netty架构解析分析了netty的基本原理和工作流程,其中EventLoop是nett...

网友评论

      本文标题:netty的通道建立与关闭流程

      本文链接:https://www.haomeiwen.com/subject/sgtdzrtx.html