我正在开发一个基于netty版本4的分析系统,以及一个基于tomcat的web客户端应用程序。
Web 应用程序接受用户的输入,然后将其发送到分析机。最后在 HTML 页面中打印响应。
这是将用户输入发送到分析节点的 servlet 中的代码:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String input = request.getParameter("input");
Channel ch = pool.borrowObject();
Protocol.Builder builder = Protocol.newBuilder().setInput(input);
ch.writeAndFlush(builder.build());
}
Netty 是异步工作的,所以 http 请求发送后结束。
这是响应处理程序中的代码:
@Override
protected void channelRead0(ChannelHandlerContext ctx, Protocol response)
throws Exception {
pool.returnObject(ctx.channel());
//How could I code here to display response to the HTML page that user requested?
}
我已经在这里挣扎了几个星期。我尝试使用公共的线程安全队列让 http 请求在那里等待,直到从队列中获得响应。但这使得整个请求变得同步。
谁能告诉我该怎么做?非常感谢!