【发布时间】:2017-10-19 04:16:08
【问题描述】:
我正在设置一个 nodejs 服务的子域,以便我可以使用 socket.io。我通过 https 提供页面,并且我让服务器正常运行。该页面已提供。那不是问题。问题是当我尝试将套接字连接到客户端时。我一直在尝试解决这个问题,我相信这里有很多有能力的人可以帮助我。
这是我的网站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 获得任何响应,因此可能是代理或防火墙问题,也可能是服务器未运行等简单问题。 -
对不起,我应该进一步澄清。我的意思是,served.html 文件由节点提供。我知道这一点,因为当我不执行“node server.js”时,我会从 nginx 收到“502 bad gateway”。我确实设置了一个 proxy_pass 以允许在可用站点中我的位置块中通过端口 3000 的请求。如果有帮助,我会在我从学校回来时添加配置。但是,防火墙是什么意思。哪一个?
-
我自己没有尝试过,但这似乎通过 nginx 代理所有内容而不是尝试在端口 3000 gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 上将 Node 直接暴露给世界。
-
我会尽快尝试的。
-
为什么不用 nginx?
标签: node.js sockets https socket.io