Как я могу отправить более одного ответа клиенту с базы Httpserver в Netty?
Я пытаюсь сделать http-сервер по netty, и это работает.
Теперь у меня есть вопрос, могу ли я отправить более одного ответа клиенту с Http-сервера?
Например, клиент запрашивает сервер из веб-браузера, и сервер отвечает «привет», а затем отвечает «пока» через несколько секунд.
Я добавляю три ручки:
sc.pipeline().addLast(new HttpResponseEncoder());
sc.pipeline().addLast(new HttpRequestDecoder());
sc.pipeline().addLast(new HttpChannelHandler());
В HttpChannelHandler я пытался ответить дважды, но не смог
public class HttpChannelHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof HttpRequest) {
//the content response to the client
String resp_content = "hello";
request = (HttpRequest) msg;
boolean keepaLive = HttpHeaders.isKeepAlive(request);
FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1,
OK, Unpooled.copiedBuffer(resp_content.getBytes("UTF-8")));
response.headers().set(CONTENT_TYPE, "text/html;charset=UTF-8");
response.headers().set(CONTENT_LENGTH,
response.content().readableBytes());
if (keepaLive) {
response.headers().set(CONNECTION, KEEP_ALIVE);
//first response
ctx.writeAndFlush(response);
content = "test";
response.headers().set(CONTENT_TYPE, "text/html;charset=UTF-8");
response.headers().set(CONTENT_LENGTH,
response.content().readableBytes());
//second response,but failed
// exception io.netty.util.IllegalReferenceCountException: refCnt: 0
response.content().writeBytes(resp_content.getBytes());
ctx.writeAndFlush(response);
}
}
}
}