在本地网络中发布 SpringBoot 应用程序并使其可用 zeroconf

问题描述

我的目标是构建一个 Spring Boot 应用程序,将其部署在我的本地网络上,并使其可用于其他设备,无需部署任何 DNS 服务器即可抛出 http。

目前,spring boot 应用程序正在我的 iMac 上运行,可通过地址 http://iMac.local:8080 访问。但是如果我把它移到另一台电脑上,这个地址就会改变,这是我想阻止的。

我开始尝试用 JmDNS 做一些事情(应该与 Bonjour/Zeroconf/mDNS 100% 兼容),并在我的 Spring boot main 中实现了以下内容

public static void main(String[] args) {

    try {
            // Create a JmDNS instance
            JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());
    
            // Register the service
            ServiceInfo serviceInfo = ServiceInfo.create("_http._tcp.local.","webvr",8080,"path=deovr");
            jmdns.registerService(serviceInfo);
    
            // Launch the Spring Boot WebVR Application
            SpringApplication.run(WebVR.class,args);
    
            
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

我期望的是访问我的 Spring boot 应用程序时抛出 URL http://webvr.local:8080http://webvr.local,但它不起作用。 另一方面,我可以看到我的“服务”发布在我的 iMac 在本地网络中获得的所有本地地址上(本地主机、wifi ipv4 地址、以太网 ipv4 地址和 ipv6 等效地址):

Bonjour Discovery printscreen

所以我知道这并不像我想的那样工作......我怎样才能实现我的目标?

如果需要,我可以考虑使用 JmDNS 的替代方案,但我想避免任何包含设置 DNS 服务器或修改任何主机文件解决方案,因为我想访问带有锁定设备的 Spring Boot 应用程序(在这种情况下,Oculus Go 和 Quest 耳机)

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)