为什么Mina服务端 心跳过滤器 的 isRequest 执行了2次


经过夜战,察看mina框架的源码,可以得知keepalivefilter,贴出源码,太多字数超过限制,简要说一下
if (messageFactory.isRequest(session, message)) {
                Object pongMessage =
                    messageFactory.getResponse(session, message);
        if (messageFactory.isResponse(session, message)) {    
                resetStatus(session);
            }
        } finally {
            if (!isKeepAliveMessage(session, message)) {
                nextFilter.messageReceived(session, message);
            }
        }
 private boolean isKeepAliveMessage{
        return messageFactory.isRequest(session, message) ||
        messageFactory.isResponse(session, message);
    }
可以看出,首先调用了isrequest,如果你返回true,就会进入if里面,执行getresponse,然后调用isresponse,最后finally调用iskeepalive,这个函数里面又调用了isrequest,可以通过断点调试。查看堆栈队列得知。
所以你isrequest调用了两次。

你可能感兴趣的:(mina框架解析)