简体   繁体   English

Socket.IO和SSL

[英]Socket.IO & SSL

i activated HTTPS and Socket.IO returned error: 我激活了HTTPS并且Socket.IO返回错误:

net::ERR_CONNECTION_REFUSED 网:: ERR_CONNECTION_REFUSED

Server.js: 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);

Front: 面前:

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

var socket = io.connect('IP:8080');

If deactivated HTTPS, Socket.IO worked... 如果停用HTTPS,Socket.IO会工作......

two theories: 两个理论:

1) Are you hosting this remotely? 1)你是远程托管这个吗? If so, you may not have the same port number as your local server. 如果是这样,您可能没有与本地服务器相同的端口号。 For instance, on Heroku hosted node apps, you can access the port number with: 例如,在Heroku托管节点应用程序上,您可以使用以下命令访问端口号:

process.env.PORT

So you could do: 所以你可以这样做:

server.listen(process.env.PORT || 8080);

2) It may also be a CORS issue. 2)它也可能是CORS问题。 You will need to include access-control-allow-origin headers. 您需要包含access-control-allow-origin标头。 Include a middleware utility like the following between setting up 'app' and calling 'server.listen(...)': 在设置'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();
    }
});

Hope this helps 希望这可以帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM