我是靠谱客的博主 贪玩飞机,最近开发中收集的这篇文章主要介绍netty心跳检测实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

初学netty想要写一点代码增加一些熟练度和对一些接口的认识,在前面一篇文章实现了通过事先发送长度的方法来传输自定义的message对象,这次在之前的代码上加入一些代码实现心跳检测
服务器这边首先要在管道加入idlestatehandler
之后在myhandler里加入一些代码

class myhandler extends SimpleChannelInboundHandler<message>{
    /** 空闲次数 */
    private int idle_count = 1;
    /** 发送次数 */
    private int count = 1;
    @Override
    public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
        System.err.println("one new channel in bound");
    }

    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent) {
            IdleStateEvent event = (IdleStateEvent) evt;
            if (IdleState.READER_IDLE.equals(event.state())){
                if (idle_count>2){
                    System.out.println("超过两次等待超时,关闭连接");
                    ctx.channel().close();
                }
                System.out.println("已经等待超过5秒没有用户信息");
                idle_count++;
            }
        } else {
            super.userEventTriggered(ctx, evt);
        }
    }
    。。。。。。

这里对心跳包进行判断,如果当前连接超过2秒没有接受到数据就对idlecount进行+1如果idlecount大于2就断开连接
这样就是一个简单的心跳检测了

最后

以上就是贪玩飞机为你收集整理的netty心跳检测实现的全部内容,希望文章能够帮你解决netty心跳检测实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部