2015-09-11 44 views
0

我正在從我的Node.js服務器提供HTML文件。服務器代碼 -Node.js - 將HTML提供給遠程客戶端

var port = 3000; 
var serverUrl = "0.0.0.0"; 

var http = require("http"); 
var path = require("path"); 
var fs = require("fs");   
console.log("Starting web server at " + serverUrl + ":" + port); 

var server = http.createServer(function(req, res) { 

    var filename = req.url || "/realtime-graph-meterNW.html"; 
    var ext = path.extname(filename); 
    var localPath = __dirname; 
    var validExtensions = { 
     , '.css' : 'text/css' 
     , '.html' : 'text/html' 
     , '.js' : 'application/javascript' 
    }; 
    var isValidExt = validExtensions[ext]; 

    if (isValidExt) { 

     localPath += filename; 
     path.exists(localPath, function(exists) { 
      if(exists) { 
       console.log("Serving file: " + localPath); 
       getFile(localPath, res, ext); 
      } else { 
       console.log("File not found: " + localPath); 
       res.writeHead(404); 
       res.end(); 
      } 
     }); 

    } else { 
     console.log("Invalid file extension detected: " + ext) 
    } 

}).listen(port, serverUrl); 

function getFile(localPath, res, mimeType) { 
    fs.readFile(localPath, function(err, contents) { 
     if(!err) { 
      res.setHeader("Content-Length", contents.length); 
      res.setHeader("Content-Type", mimeType); 
      res.statusCode = 200; 
      res.end(contents); 
     } else { 
      res.writeHead(500); 
      res.end(); 
     } 
    }); 
} 

當我嘗試我自己的電腦上運行,從瀏覽器的HTML文件,使用http://localhost:3000/realtime-graph-meterNW.html,它工作正常。

但是,當我嘗試從使用我的IP地址的同一網絡上的另一臺PC上的瀏覽器訪問它時,出現錯誤 - Failed to load resource: the server responded with a status of 503 (Service Unavailable)

我不明白我在哪裏出錯了。有什麼建議麼 ?

回答

1

可能是你的本地防火牆阻止連接到你的機器端口3000

檢查防火牆設置。 您必須允許您的PC在防火牆設置中可以從外部訪問。

還要檢查這個問題的答案:像接受的答案對我聯繫的問題說

How could others, on a local network, access my NodeJS app while it's running on my machine?

,你必須確保你把正確的URL,例如像http://192.168.3.200:3000(如果你的IP是192.168.3.200),當試圖從局域網訪問你的服務器時。

+0

我檢查了我輸入的URL,它是正確的。正如你所說,它可能是一個防火牆問題。將研究它。 – Rohan

+0

「請檢查您的防火牆設置,您必須允許您的電腦在防火牆設置中可以從外部訪問。」這是問題所在,我的電腦不允許在外部連接3000端口。謝謝 – Rohan

+1

很高興能夠幫助您並指出可能的解決方案。 –

相關問題