返回顶部
首页 > 资讯 > 精选 >java 中 ChannelHandler的用法详解
  • 336
分享到

java 中 ChannelHandler的用法详解

javachannelhandlerava 2023-05-31 08:05:33 336人浏览 独家记忆
摘要

java 中 ChannelHandler的用法详解前言:ChannelHandler处理一个I/O event或者拦截一个I/O操作,在它的ChannelPipeline中将其递交给相邻的下一个handler。通过继承ChannelHan

java 中 ChannelHandler的用法详解

前言:

ChannelHandler处理一个I/O event或者拦截一个I/O操作,在它的ChannelPipeline中将其递交给相邻的下一个handler。

通过继承ChannelHandlerAdapter来代替

因为这个接口有许多的方法需要实现,你或许希望通过继承ChannelHandlerAdapter来代替。

context对象

一个ChannelHandler和一个ChannelHandlerContext对象一起被提供。一个ChannelHander通过一个context对象和其所属的那个ChannelPipeline进行交互。使用context对象,ChannelHandler可以向上或者向下传递events,动态地修改pipeline,或者存储与handler相关的信息(使用AttributeKeys)。

状态管理

一个ChannelHandler经常需要存储一些状态相关的信息。最简单和推荐的方法是使用成员变量:

public interface Message {  // your methods here}public class DataServerHandler extends SimpleChannelInboundHandler<Message> {  private boolean loggedIn;  @Override  protected void messageReceived(ChannelHandlerContext ctx, Message message) {    Channel ch = e.getChannel();    if (message instanceof LoginMessage) {      authenticate((LoginMessage) message);      loggedIn = true;    } else (message instanceof GetDataMessage) {      if (loggedIn) {        ch.write(fetchSecret((GetDataMessage) message));      } else {        fail();      }    }  }  ...}

--结束END--

本文标题: java 中 ChannelHandler的用法详解

本文链接: https://lsjlt.com/news/224392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作