我設立一個服務的NodeJS子域,這樣我可以使用socket.io。我通過https服務頁面,並且讓服務器正常運行。該頁面已送達。這不是問題。問題是當我嘗試將套接字連接到客戶端時。我一直試圖解決這個問題,我確信有很多有能力的人可以幫助我。服務器的NodeJS HTTPS運行,但插座將無法連接(網:: ERR_CONNECTION_TIMED_OUT)
這是我的地盤https://reward.cshive.com
錯誤消息我得到:
客戶端
var socket = io.connect('https://reward.cshive.com:3000');
服務器端
const https = require('https');
var fs = require('fs');
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/cert.pem')
};
var app = https.createServer(options, (req, res) => {
fs.readFile(__dirname + '/served.html',
function (err, data) {
if (err) {
res.writeHead(500);
console.log('Error loading page');
return res.end('Error loading page');
}
console.log('--Connection');
res.writeHead(200);
res.end(data);
});
})
var server = app.listen(3000, function(err) {
if (err) {
console.log(err);
} else {
console.log("Listening on port 3000");
}
});
var io = require('socket.io').listen(server);
當你說「的頁面送達」,你的意思是哪一頁?我最初認爲你的意思是代碼中提到的頁面(來自文件'served.html'),但我似乎無法訪問它。我無法從端口3000獲得任何響應,所以它可以是代理或防火牆問題,也可以是服務器甚至沒有運行的簡單事情。 – skirtle
對不起,我應該進一步澄清。我的意思是,文件serve.html由節點提供服務。我知道這一點,因爲當我不做「node server.js」時,我從nginx得到一個「502壞的網關」。我確實設置了proxy_pass以允許通過位於我的位置塊中的端口3000的請求可用。如果能幫助解決問題,我會在學校回來時添加配置。但是,你的意思是防火牆。哪一個? –
我還沒有嘗試過自己,但這個看起來像,而不是試圖直接暴露節點到世界上的3000端口https://gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 – skirtle