基于 netty 3.6,我在我的 Java 桌面应用程序中实现了一个小型 HTTP 服务器。到目前为止,我已经成功创建了基本的 HTTP 服务器布局,我可以将各种基于文本的文件发送到基于浏览器的客户端。
在我的 netty 服务器管道工厂中,我创建了新的通道管道,如下所示:
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new HttpServerHandler());
在我的HttpServerHandler
课堂上,我将文本数据发送给客户,如下所示:
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
response.setHeader(CONTENT_TYPE, contentType + "; charset=UTF-8");
response.setHeader(PRAGMA, "no-cache");
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));
if(keepAlive)
{
response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes());
response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
}
ChannelFuture future = e.getChannel().write(response);
好的。现在我还想向我的客户发送二进制数据(例如图像)。由于我没有找到有关如何实现此目的的在线示例,因此我有两个问题:
- 我如何需要修改通道管道才能将文本和二进制数据发送给我的客户?
- 如何修改
HttpServerHandler
类以便向客户端发送二进制文件?