簡體   English   中英

Socket.IO和SSL

[英]Socket.IO & SSL

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

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM