入坑netty但是发现坑好多啊

我这个加了心跳机制,发现这么一个问题,客户端发送给服务器端的心跳信息如果不加入\n,发现无法触发
服务器端的read0那个方法,但是一旦加上,就会报错
DefaultFullHttpRequest(decodeResult: failure(java.lang.IllegalArgumentException: invalid version format: BODY=NULL]), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0
贴上代码

protected void channelRead0(ChannelHandlerContext ctx, Object o) throws Exception {
        System.out.println(o);
        if(o instanceof FullHttpRequest){
            //握手阶段  传统http协议
            dealHandshake(ctx, (FullHttpRequest) o);
        }else if(o instanceof TextWebSocketFrame){
            //文本消息处理
            dealTextWebSocketFrame(ctx, (TextWebSocketFrame) o);
        }else if(o instanceof PingWebSocketFrame){
            System.out.println("jin-------------");
            //心跳消息处理
        }else if(o instanceof CloseWebSocketFrame){
            //断开处理
            try {
                dealCloseWebSocketFrame(ctx);
            }catch (Exception e){
                e.printStackTrace();
            }

        }`

这个是服务器端的代码,上面那个报错信息就是o打印出来的

protected void sendPingMsg(ChannelHandlerContext ctx){
        Model model = new Model();

        model.setType(TypeData.PING);

        ctx.channel().writeAndFlush(model+"\n");

        heartbeatCount++;

        System.out.println(name + " send ping msg to " + ctx.channel().remoteAddress() + "count :" + heartbeatCount);
    }

这个是发送的心跳信息,加上了\n 因为网上说必须加这个,没有结束符不然无法识别

https://blog.csdn.net/qq_35130066/article/details/81099691