2017-05-14 10 views
0

私は現在、ノードjsと他のJavascript APIを使用してサーバーを作成する方法を学習しています.NATネットワークのすべてのPCナビゲーターでうまく動作するHTTPと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サーバが内蔵されていた場所に私のルータのポートを転送するために必要な実現しています。パブリックIPアドレスでアクセスを許可するには、HTTP(#80)とHTTPS(#443)の両方を転送する必要がありました。

また、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); 
関連する問題