[英]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.