Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript在本地专用网络中发现Web服务_Javascript_Rest_Web Services_Networking_Service Discovery - Fatal编程技术网

使用javascript在本地专用网络中发现Web服务

使用javascript在本地专用网络中发现Web服务,javascript,rest,web-services,networking,service-discovery,Javascript,Rest,Web Services,Networking,Service Discovery,我搜索了一些关于我的问题的选项,但不幸的是找不到任何有用的信息 这是我的问题: 假设我有一台在特定端口上运行rest服务的1x计算机,比如说5555,在专用网络中运行 现在我有了一个前端/浏览器应用程序(javascript),可以用手机或电脑打开。当一台设备连接到同一个网络(假设是无线的)并打开前端应用程序时,它应该以任何方式发现另一台计算机的rest服务,但我找不到解决这一难题的方法 所以我在网络中找不到服务的ipv4,因为webRTC解决方案被破坏了。我必须遍历所有可能的私有ip范围,才能

我搜索了一些关于我的问题的选项,但不幸的是找不到任何有用的信息

这是我的问题:

假设我有一台在特定端口上运行rest服务的1x计算机,比如说5555,在专用网络中运行

现在我有了一个前端/浏览器应用程序(javascript),可以用手机或电脑打开。当一台设备连接到同一个网络(假设是无线的)并打开前端应用程序时,它应该以任何方式发现另一台计算机的rest服务,但我找不到解决这一难题的方法

所以我在网络中找不到服务的ipv4,因为webRTC解决方案被破坏了。我必须遍历所有可能的私有ip范围,才能找到正在运行的服务,这似乎有点过头了


有人知道如何解决这个难题吗?

大多数web应用程序实际上都使用端口扫描方法,这是您试图避免的。我可以想出一些其他方法:

  • 让服务也以特定名称发布mDNS服务,例如foo.local。您的web应用程序可以使用该主机名进行静态配置。这将要求您能够控制服务,并且您的网络/主机需要能够使用MDN
  • 要求服务管理员在公共DNS服务器中注册本地IP地址。这需要在web应用程序中手动配置URL,但至少可以避免发现地址

您所说的是一种网络扫描,如果您能够做到这一点,这是一个安全问题,尽管在家庭网络中通常是可能的。我将为该本地网络添加一个DNS服务器,并使用本地域名访问该服务。我不知道在哪里传播服务的其他标准方法。

我明白了,这意味着在路由器上配置DNS,这会增加我试图避免的更多工作。我会继续思考,谢谢你的回答!我理解。这对于非web应用程序来说非常简单,因为它们可以轻松地确定自己的ipv4,只需遍历254个主机就可以看到启动的主机。这可能就是在网络中检测打印机的方式。我正在考虑获取路由器信息,以便缩小搜索范围,因为它们使用预先配置的专用ip范围。另一种方法是确定网关,然后从那里遍历255个主机。但通过浏览器与网关通信似乎是另一个挑战。你认为呢?我同意,找到网关可能和找到本地子网一样困难。此外,请记住,255只是一个可能的子网大小-10.0.0.0/8子网是16mio地址大。也许你可以详细说明你想避免什么?e、 g.如果您不想接触服务器id,建议使用DNS服务器-如果您想避免更改网络中的某些内容,可以使用mDNS方法。另一种简单的方法是让web服务器计算出其LAN IP,然后将其发送到实际的DNS服务器,因为许多DNS主机都有API。@PssstZzz似乎可以从浏览器中使用MDN:我很好奇,如果你能做到,请告诉我@inf3rno这听起来像是一个有趣的库,但考虑到它依赖于很少可用的FirefoxAPI,它可能不是生产级方法。我的想法是,甚至不使用MDN的交互式服务发现,而是让服务器始终声明相同的域(例如restservice.local),并在前端始终连接到该主机名。这将适用于实际使用mDNS守护进程解析名称的主机。