2017-10-09 561 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網站上的負面人士帶你失望。 :虛擬拳頭碰撞: