美文网首页NettyWebRTC
netty双向心跳的设计

netty双向心跳的设计

作者: 虫二无边 | 来源:发表于2015-10-19 15:36 被阅读433次
    • 心跳包:不带消息体
    • 客户端定时20秒发送心跳包 -> 服务端回应
    • 客户端检查60秒内未读到消息,则认为断线,关闭连接,启动断线重连
    • 服务端检查60秒内未读到消息,则认为断线,关闭连接,移除连接映射关系
    Paste_Image.png
    /**
     * heart beat command
     * Created by lif on 2015/10/10.
     */
    public class HeartBeatHandler extends ChannelInboundHandlerAdapter implements MsgHandler  {
    
        @Override
        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
            if (evt instanceof IdleStateEvent) {
                IdleStateEvent event = (IdleStateEvent) evt;
                if (event.state() == IdleState.READER_IDLE) {
                    // Read timeout
                    System.out.println("READER_IDLE: read timeout from " + ctx.channel().remoteAddress());
    
                    String userId = CommonUtil.getLoginInfo(ctx.channel()).getUser_id();
                    ConnectionManager.removeConn(userId);
    
                    // close connection
                    if (ctx.channel().isOpen()) {
                        ctx.channel().close();
                    }
    
                }
            }
        }
    

    相关文章

      网友评论

        本文标题:netty双向心跳的设计

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