我激活了HTTPS,并且Socket.IO返回了错误:
净:: ERR_CONNECTION_REFUSED
Server.js:
var fs = require('fs');
var https = require('https');
var options = {
key: fs.readFileSync(‘./cert.pem'),
cert: fs.readFileSync(‘./cert.crt')
};
var express = require('express'),
app = express(),
server = https.createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(8080);
面前:
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
var socket = io.connect('IP:8080');
如果停用HTTPS,则Socket.IO可以正常工作...
最佳答案
两种理论:
1)您要远程托管吗?如果是这样,则您可能没有与本地服务器相同的端口号。例如,在Heroku托管的节点应用上,您可以使用以下命令访问端口号:
process.env.PORT
因此,您可以执行以下操作:
server.listen(process.env.PORT || 8080);
2)这也可能是CORS问题。您将需要包含access-control-allow-origin标头。在设置“ app”和调用“ server.listen(...)”之间包括如下所示的中间件实用程序:
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
if ('OPTIONS' == req.method) {
res.writeHead(200);
res.end();
} else {
next();
}
});
希望这可以帮助