Netty Server,同时需要是client

Netty Server, at the same time need to be a client

我想创建一个服务器让客户端连接,所以从这一点来看,它只是一个服务器。但是,与此同时,这个服务器 - 让我们称之为 "Server A" - 它需要连接到另一个服务器(我称之为 "Server B")来报告它自己的信息,而不是作为路由的代理从客户端到 "Server B" 的数据,只报告它的信息,如 "I'm still online"。

因此,许多客户端将连接到 "Server A",而 "Server A" 将作为客户端连接到 "Server B"。我如何使用 Netty 做到这一点?

我看了 netty 的代理示例,但我认为代理服务器在接收到客户端的临时连接时会创建一个客户端。但是我需要在 "Server A" 上为此目的专门设置一个客户端角色,而不是那样。帮帮我,谢谢。

您可以 bootstrap 您的客户端在 channelActive 或您的服务器 A 处理程序的任何其他方法中连接到服务器 B。然后,一旦客户端 bootstrap 成功,您就可以使用客户端向您的服务器 B 发送任何消息。

这里有一个例子: https://github.com/normanmaurer/netty-in-action/blob/2.0-SNAPSHOT/chapter8/src/main/java/nia/chapter8/BootstrapSharingEventLoopGroup.java

您可以为 ServerChannel 设置 handler,而不是为您的服务器设置 childHandler。然后它的方法只会为服务器调用一次,而不是为每个客户端连接调用。