我正在寻找一个服务器示例,它将端口 80 上的 http 处理程序和同一个 jar 中另一个端口上的 protobuf 处理程序结合起来。谢谢!
问问题
7065 次
2 回答
13
在我看来,创建不同的 ServerBootstrap 并不是完全正确的方法,因为它会导致创建未使用的实体、处理程序、双重初始化、它们之间可能的不一致、EventLoopGroups 共享或克隆等。
一个好的选择是在一个 Bootstrap 服务器中为所有需要的端口创建多个通道。如果以Netty 4.x "Getting Started"中的 "Writing a Discard Server" 为例,我们应该替换
// Bind and start to accept incoming connections.
ChannelFuture f = b.bind(port).sync(); // (7)
// Wait until the server socket is closed.
// In this example, this does not happen, but you can do that to gracefully
// shut down your server.
f.channel().closeFuture().sync()
和
List<Integer> ports = Arrays.asList(8080, 8081);
Collection<Channel> channels = new ArrayList<>(ports.size());
for (int port : ports) {
Channel serverChannel = bootstrap.bind(port).sync().channel();
channels.add(serverChannel);
}
for (Channel ch : channels) {
ch.closeFuture().sync();
}
于 2015-09-04T20:13:35.527 回答
9
我不知道你到底在找什么。它只是关于创建两个不同的 ServerBootstrap 实例,配置它们并调用 bind(..) 就是这样。
于 2012-09-11T11:30:15.223 回答