5

我正在寻找一个服务器示例,它将端口 80 上的 http 处理程序和同一个 jar 中另一个端口上的 protobuf 处理程序结合起来。谢谢!

4

2 回答 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 回答