Netty (2)-ChannelInboundHandlerAdapter入站事件

2023-10-31

第1篇,我们继承ChannelInboundHandlerAdapter后,即可收到消息并处理。本篇介绍其更多的用法

基本概念

  • Channel:可以理解为一个连接,每一个客户端连到服务器,都会有一个与之对应的Channel。
  • ChannelHandler:用来处理Channel中的各种事件。
  • ChannelInboundHandlerAdapter:入站ChannelHandler,即从客户端进入服务器的各种事件。
  • ChannelHandlerContext:每个处理事件的方法都有这个参数,可用于执行与当前Channel相关的各种操作。

捕获ChannelInboundHandlerAdapter事件

public class EchoServerHandler extends ChannelInboundHandlerAdapter{
    public void channelRegistered(ChannelHandlerContext ctx) {
        System.out.println("注册");
    }
    public void channelActive(ChannelHandlerContext ctx) {
    	System.out.println("激活");
    }
    public void channelInactive(ChannelHandlerContext ctx) {
    	System.out.println("断开");
    }
    public void channelUnregistered(ChannelHandlerContext ctx) {
    	System.out.println("注销");
    }
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
    	System.out.println("读取消息");
    }
    public void channelReadComplete(ChannelHandlerContext ctx)  {
    	System.out.println("消息读取完成");
    }
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
    	System.out.println("用户事件");
    }
    public void channelWritabilityChanged(ChannelHandlerContext ctx){
    	System.out.println("可写状态变更为"+ctx.channel().isWritable());
    }
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
    	System.out.println("发生异常");
    }

入站事件介绍

  • 注册和激活:当客户端连接时,首先会触发注册,进行一些初始化的工作,然后激活连接,就可以收发消息了。
  • 断开和注销:当客户端断开时,反向操作,先断开,再注销。
  • 读取消息:当收到客户端消息时,首先读取,然后触发读取完成。
  • 发生异常:不多解释了。
  • 用户事件:由用户触发的各种非常规事件,根据evt的类型来判断不同的事件类型,从而进行不同的处理。
  • 可写状态变更:收到消息后,要回复消息,会先把回复内容写到缓冲区。而缓冲区大小是有一定限制的,当达到上限以后,可写状态就会变为否,不能再写。等缓冲区的内容被冲刷掉后,缓冲区又有了空间,可写状态又会变为是。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty (2)-ChannelInboundHandlerAdapter入站事件 的相关文章

  • Java项目:二手图书商城平台(java+SSM+JSP+JS+jquery+Mysql)

    源码获取 俺的博客首页 资源 里下载 项目介绍 用户角色包含以下功能 用户登录 查看商品详情 按分类查看 查看我的书架 上传二手书等功能 PS 这个没有管理员角色 环境需要 1 运行环境 最好是java jdk 1 8 我们在这个平台上运行

随机推荐

  • windows安装基于Apache的SVN服务器(包括SSL配置)

    原文地址 http bbs iusesvn com thread 158 1 1 html 参考文章 http blog 163 com shihua 23 blog static 23337594201010564847772 翻译整理
  • idea:父工程的pom.xml中的依赖爆红,下载刷新也没反应

    问题 在创建父工程的时候 使用dependencyManagement管理jar包时 发现有些爆红了 此时的版本号是由 和properties属性来维护的 参考备注掉的红色部分 于是去刷新下载 发现没反应 怎么刷新都不下载jar包 这种问题
  • java8 stream().map().collect()用法

    有一个集合 List
  • Java基础13--面向对象:继承

    Java基础13 面向对象 继承 文章目录 Java基础13 面向对象 继承 继承的概念 生活中的继承 类的继承格式 继承类型 继承的特性 继承关键字 extends关键字 implements关键字 super 与 this 关键字 fi
  • Cesium案列学习(Multi-partCZML.html)

    在学习这个案例之前 先花一点时间了解一下什么是CZML CZML Structure AnalyticalGraphicsInc czml writer Wiki github com Cesium Language CZML 入门1 CZ
  • 中国集成电路产业人才供需报告

    导读 集成电路产业是信息产业的核心 更是支撑经济社会发展和保障国家安全的战略性 基础性和先导性产业 中国大陆集成电路产业处于突破技术封锁 攻坚 卡脖子 瓶颈 构筑核心优势的关键窗口期 迫切需要产业领军人才 专业技术人才 基础研究人才等有力支
  • 什么是静态测试?什么是动态测试?

    如果从被测试对象是否被运行的角度来划分 测试可以分为静态测试和动态测试两种 静态测试是指不运行被测试的软件系统 而是采用其他手段和技术对被测试软件进行检测的一种测试技术 例如 代码走读 文档评审 程序分析等都是静态测试的范畴 常用的静态分析
  • Win10安装Linux子系统WSL(ubuntu2204)及图形桌面xfce4

    WSL简介 什么是 WSL 在计算机上使用 Linux 系统通常有两种方式 使用虚拟机或安装 Linux 系统 使用虚拟机时开销较大 直接使用 Linux 系统虽然可以带来流畅体验 但与 Windows 之间来回切换比较麻烦 为此 微软开发
  • [激光原理与应用-47]:《焊接质量检测》-4-普雷茨特激光焊接过程监控系统LWM分析

    目录 第1章 激光焊接过程监控系统LWM概述 第2章 产品特性与功能 2 1 生产相关的信息 2 2 原始信息检测 2 3 焊接质量分析信息 2 4 缺陷报告与生产控制 2 5 LWM给客户带来的好处 2 6 适用范围 2 7 人机界面 H
  • OCX中主Frame中处理view(备用)

    if m ptmpview NULL m ptmpview GetWindow GW CHILD if m ptmpview NULL m ptmpview gt SendMessage WM PAINT CRect rc CRect 0
  • c++,qt 如何动态获取类的字段的名称和数据

    在C 和Qt中 无法直接通过类来动态获取字段的名称和数据 C 是一种静态类型语言 它在编译时需要确定类的结构 包括字段的名称和数据类型 因此 需要在代码中显式地引用字段名称才能访问其数据 然而 你可以使用反射 reflection 库或自定
  • 浏览器跨域问题的总结

    本文主要总结了5中常用的跨域方法 包括JSONP CORS Nginx Proxy与WebSocket 在日常练手的小项目中 推荐CORS 比较方便易理解 部分图片来源网络 如有侵权 请联系删除 1 浏览器同源策略 所谓同源是指 域名 协议
  • 【Git系列】分支操作

    分支操作 1 什么是分支 2 分支的好处 3 分支操作 3 1 查看分支 3 2 创建分支 3 3 切换分支 4 分支冲突 4 1 环境准备 4 2 分支冲突演示 其他系列 Git最详细的体系化教程 1 什么是分支 在版本控制过程中 使用多
  • Ptython入门学习:模块导入自定义函数与 时间模块练习

    目录 Python 日期和时间 Python 第三方模块 Python 日期和时间 Python 的 time 模块下有很多函数可以转换常见日期格式 如函数time time 用于获取当前时间戳 import time import dat
  • element plus 表格,单元格颜色,边框设置

    先看效果 cell style cellStyle 设置单元格颜色 边框 返回值一定是个对象包含
  • 使用fetch函数发送AJAX请求

    使用fetch函数发送AJAX请求 案例 点击按钮发送AJAX请求
  • MySQL第一章 创建数据库及数据表 ② 代码

    MySQL第一章 创建数据库及数据表 代码 创建表 方式一 手动点击创建 1 连接MySQL 2 创建数据库 3 创建Student1表格 4 编辑表格中的数据内容 方式二 代码编写创建 1 在MySQL 一级数据库 中新建查询链接 2 在
  • Web 3.0顶级干货教学:什么是Web 3.0 ?

    Web 3 0顶级干货教学 什么是Web 3 0 尊重原创 编写不易 帮忙点赞关注一下 转载小伙伴请注明出处 谢谢 什么是Web 3 0 Web 3 0 是 John Markoff 在 2006 年提出的一种新型网络 它被定义为语义网络
  • 浏览器页面不能正常显示

    1 考虑是不是浏览器的vpn和软件vpn冲突导致的浏览器页面不能正常显示 2 考虑是不是自己的hosts文件 将一些网址指向了 127 0 0 1 因为我修改过hosts文件 指向了一些网址到这个IP 而我的浏览器VPN也手动代理了这个IP
  • Netty (2)-ChannelInboundHandlerAdapter入站事件

    在第1篇 我们继承ChannelInboundHandlerAdapter后 即可收到消息并处理 本篇介绍其更多的用法 基本概念 Channel 可以理解为一个连接 每一个客户端连到服务器 都会有一个与之对应的Channel Channel