并发编程 | Netty - [常用预设 Handler]

§1 心跳检测器

IdleStateHandler

  • 自动对空闲时长进行判断
  • 触发空闲超长后,抛出 IdleStateEvent 事件
  • IdleStateEvent 事件自动 交由此 handler 后的下一个 handler 进行处理

参数

  • readerIdleTime:读空闲时长
  • writerIdleTime:写空闲时长
  • allIdleTime:读写空闲时长
  • unit:单位

示例

ch.pipeline().addLast(new IdleStateHandler(1,2,3,TimeUnit.SECONDS));

§2 事件处理

SimpleUserEventChannelHandler<Event>
事件实际上是依赖 ChannelInboundHandler 中如下接口处理

/**
 * Gets called if an user event was triggered.
 */
void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception;

但此接口的事件是个 Object,而 Netty 一定对各种事件有封装,且应当遵循单一职责一个事件处理器只处理一种事件
因此推荐 SimpleUserEventChannelHandler<Event>

示例
以空闲事件 IdleStateEvent 的处理为例

ch.pipeline().addLast(new NettyChatHeartStopEventHandler());
public class NettyChatHeartStopEventHandler extends SimpleUserEventChannelHandler<IdleStateEvent> {
	// 演示代码,只打印
    @Override
    protected void eventReceived(ChannelHandlerContext ctx, IdleStateEvent evt) throws Exception {
        switch (evt.state()){
            case READER_IDLE: break;
            case WRITER_IDLE: break;
            case ALL_IDLE:break;
        }
        System.out.println(evt.state());
    }
}

§3 日志

LoggingHandler

参数

  • level:日志级别

示例

ch.pipeline().addLast(new LoggingHandler(LogLev.INFO));

§4 编解码器

Http 服务端编解码器
HttpServerCodec

示例

ch.pipeline().addLast("coder4HttpRequest",new HttpServerCodec());

String 编解码器
StringEncoder
StringDecoder

示例

ch.pipeline().addLast("coder4HttpRequest",new HttpServerCodec());
ch.pipeline().addLast("coder4HttpRequest",new HttpServerCodec());

ProtoBuf 编解码器
ProtoBufEncoder
ProtoBufDecoder

示例

ch.pipeline().addLast(new ProtoBufEncoder());
ch.pipeline().addLast(new ProtoBufDecoder());

§5 WebSocket

WebSocketServerProtocolHandler

  • 用于将 http 协议升级为 ws 协议
    通过状态码 101
  • 升级后通过自定义 WebSocket 帧 handler 处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值