socket.ioを使用できるように、nodejsのサブドメインを設定しています。私はhttpsでページを提供しています。サーバーが正しく機能するようになっています。ページが配信されます。それは問題ではありません。問題は、ソケットをクライアントに接続しようとするときです。私はこれをしばらく解決しようとしてきました。そして、私を助けることができる多くの有能な人がいると確信しています。Nodejsサーバーhttpsが実行されていますが、ソケットが接続されません(net :: 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);
あなたは 'The page is served'と言うとき、どのページを意味しますか?私は当初、(serve.htmlファイルの)コードに記述されているページを意味すると仮定していましたが、私はそのファイルにアクセスできないようです。私はポート3000から何の応答も得られないので、プロキシやファイアウォールの問題から、サーバが稼働していなくても簡単なものまで何でもかまいません。 – skirtle
申し訳ありませんが、私はさらに明確にすべきでした。つまり、serve.hというファイルはノードによって提供されています。私はこれを知っている。なぜなら、「node server.js」を実行しないと、nginxから「502 bad gateway」が得られるからです。私はproxy_passを設定してサイト内の私のロケーションブロックのポート3000を介したリクエストを可能にしました - 利用可能です。私はそれが事件を助けるならば私が学校から戻ってくるときに設定を追加します。しかし、ファイアウォールはどういう意味ですか?どれ? –
私は自分で試したことはありませんが、これは、ポート3000でNodeを直接世界に公開しようとするよりも、nginxを使ってすべてをプロキシするのに便利かもしれないようです。https://gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 – skirtle