Je configure un sous-domaine nodejs served afin que je puisse utiliser socket.io. Je sers la page sur https, et j'ai eu le serveur pour fonctionner correctement. La page est servie. Ce n'est pas le problème. Le problème est lorsque j'essaie de connecter le socket au client. J'ai essayé de résoudre cela pendant un moment, et je suis sûr qu'il y a beaucoup de gens compétents ici qui peuvent m'aider.Le serveur Nodejs https est en cours d'exécution, mais le socket ne se connecte pas (net :: ERR_CONNECTION_TIMED_OUT)
C'est mon site https://reward.cshive.com
message d'erreur que je reçois:
côté client
var socket = io.connect('https://reward.cshive.com:3000');
côté serveur
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);
Lorsque vous dites 'La page est servie', à quelle page voulez-vous dire? J'avais supposé initialement que vous vouliez dire la page mentionnée dans le code (du fichier 'served.html') mais je ne semble pas pouvoir y accéder. Je ne peux obtenir aucune réponse du port 3000, donc cela peut être quelque chose d'un problème de proxy ou de pare-feu à quelque chose d'aussi simple que le serveur ne fonctionne même pas. – skirtle
Je suis désolé, j'aurais dû clarifier davantage. Ce que je veux dire, c'est que le fichier servi.html est servi par le noeud. Je sais cela parce que quand je ne fais pas "node server.js" je reçois une "mauvaise passerelle 502" de nginx. J'ai défini un proxy_pass pour autoriser les demandes sur le port 3000 dans mon bloc d'emplacement dans les sites disponibles. J'ajouterai la config quand je reviendrai de l'école si ça aide l'affaire. Mais, que voulez-vous dire par pare-feu. Laquelle? –
Je ne l'ai pas essayé moi-même, mais il semble qu'il pourrait être utile de tout proxy via nginx plutôt que d'essayer d'exposer Node directement au monde sur le port 3000 https://gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 – skirtle