2017-10-09 65 views
0

我正在使用multicast-dns节点模块尝试进行此项工作。使.local解析为IP地址和端口(mdns)

展望在浏览器了custom.local给我的控制台消息我的设置,但我无法看到我的实际服务器上运行(这是在localhost:12345,其中12345是一个动态的数字这样做)。我想在访问custom.local时能够看到我的本地服务器。这可能吗?

下面是一些代码:

mdns.on("query", query => { 
    if (query.questions[0] && query.questions[0].name === "custom.local") { 
    console.log(query); 

    mdns.respond({ 
     answers: [ 
     { 
      name: "custom.local", 
      type: "SRV", 
      data: { 
      port: n.get("p"), // dynamic port 
      weight: 0, 
      priority: 10, 
      target: ip // local IP 
      } 
     }, { 
      name: "custom.local", 
      type: "A", 
      data: ip, 
      ttl: 300 
     } 
     ] 
    }); 
    } 
}); 

编辑:我可以连接到我的本地服务器就好了,这是不是一个问题。

+1

如果您无法通过'localhost:12345'(或通过任何IP /端口组合运行)连接到您的服务器,那么MDNS不是您的问题,您的实际服务器是。 –

+2

您不能在DNS中放置端口号。 DNS仅用于按名称查找IP。为了您的浏览器仅通过名称查看它,您需要在服务前使用代理程序,或者需要在端口80上运行服务本身。端口号实际上不应该是动态的。你应该在设置你的服务中指定它 – Cfreak

+0

@Cfreak啊好吧,谢谢你的信息! –

回答

0

报价cfreak

你不能把端口号的DNS。 DNS仅用于通过名称查找IP。为了您的浏览器仅通过名称查看它,您需要在服务前使用代理程序,或者需要在端口80上运行服务本身。端口号实际上不应该是动态的。您应该在设置您的服务时指定它。

这回答我的问题,并提供下一步。谢谢!

更新:Figured out what I was trying to do。这里有一些代码!


找到了解决方案,WOOP WOOP!

我使用this module,但稍微调整了源代码(仅仅因为我有动态端口,因为我觉得它)。

/* jshint undef: true, unused: true, esversion: 6, node: true */ 



"use strict"; 



// 
// G E T 
// P A C K A G E S 

import express from "express"; 
import http from "http"; 
import local from "./server/local"; 

const n = express(); 



n.get("/", (req, res) => { 
    res.send("Welcome home"); 
}); 



// 
// L A U N C H 

const server = http.createServer(n); 

server.listen(0,() => { 
    const port = server.address().port; 
    local.add(port, "custom.local"); 
}); 

希望这可以帮助你,以及未来的互联网搜索器! :D 不要让其他SE网站上的负面人士带你失望。 :虚拟拳头碰撞: