我正在为某个项目使用netty-socketio。我像这样设置服务器:

Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(8080);

SocketIOServer server = new SocketIOServer(config);
server.start();

我对此几乎一无所知,我想知道为什么我需要在这里设置主机名?仅仅给端口监听就足够了吗?

另外,如何在Docker中处理此问题:我拥有服务器的IP和容器的虚拟IP,我应该给哪个?

如果我有另一个服务器在不同的容器中运行(但在同一台机器上),并且我希望两者进行通信,该如何处理所有这些IP来实现呢?通信是否像在本地主机上一样高效?

最佳答案

如您所见,here设置主机名可以轻松省略。基本上,这只是将套接字绑定(bind)到的接口(interface)。所以是的,您只能指定要侦听的端口-在这种情况下,它将侦听0.0.0.0。

当涉及到docker时,您可以不指定主机名,而是配置端口公开。例如。容器将侦听0.0.0.0:8888,该侦听器将公开给:8889-参见port exposing

所有容器将在分配其唯一IP的情况下运行。如果要他们进行通信,只需设置要绑定(bind)的其他端口即可。

10-01 01:49
查看更多