我激活了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();
    }
});


希望这可以帮助

10-08 06:34
查看更多