我正在为某个项目使用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)的其他端口即可。