2017-05-14 27 views
0

我目前正在學習如何使用Node js和其他JavaScript apis創建服務器,並且我已經構建了一個HTTP和HTTPS服務器,它可以在我的nat網絡的每個pc navigator上正常工作,但是當我嘗試在我的android上使用https服務器時移動設備:https://192.168.1.20:8443這是我建立我的node.js服務器,它不會加載,並說該網頁無法正常工作,雖然它與http協同工作。HTTPS服務器不能在Android手機上工作,但HTTP可以嗎?

我也想知道如果我可以使我的服務器可見或使用我的路由器公共IP地址訪問它,我怎麼能做到這一點。

這是我的服務器代碼:

var fs = require('fs'); 
var http = require('http'); 
var https = require('https'); 
var cors = require('cors'); 
var privateKey = fs.readFileSync('host.key', 'utf8'); 
var certificate = fs.readFileSync('host.cert', 'utf8'); 

var credentials = {key: privateKey, cert: certificate}; 
var express = require('express'); 
var app = express(); 
app.use(cors()); 
app.use('/work', express.static('/.')) 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
    console.log('Servidor en marxa.'); 
}); 


var httpServer = http.createServer(app); 
var httpsServer = https.createServer(credentials, app); 

httpServer.listen(8080); 
httpsServer.listen(8443); 

回答

0

幾小時後我剛剛意識到我需要我的路由器端口轉發到那裏,我有我的Node.js服務器構建的。我必須將HTTP(#80)和HTTPS(#443)兩者都端口轉發給公共IP地址。

還必須修改我的Javascript服務器代碼的一部分。

var fs = require('fs'); 
var http = require('http'); 
var https = require('https'); 
var cors = require('cors'); 
var privateKey = fs.readFileSync('host.key', 'utf8'); 
var certificate = fs.readFileSync('host.cert', 'utf8'); 

var credentials = {key: privateKey, cert: certificate}; 
var express = require('express'); 
var app = express(); 
app.use(cors()); 
var path = require('path'); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
    console.log('Servidor en marxa.'); 
}); 

// your express configuration here 

var httpServer = http.createServer(app); 
var httpsServer = https.createServer(credentials, app); 

httpServer.listen(80,"0.0.0.0"); 
httpsServer.listen(443,"0.0.0.0"); 
var io = require("socket.io")(httpServer); 
相關問題