【发布时间】:2015-04-22 08:33:54
【问题描述】:
有时对 https:/domain:8050'/socket.io/socket.io.js 的请求会在 Chrome 开发人员工具的网络选项卡中返回状态“(失败)”。
在 Firefox 中出现“安全连接失败”错误和中止状态。
Socket IO 版本为“1.3.5”。 Node.js 版本是“v0.10.25”。
server.js
var fs = require('fs'),
express = require('express'),
options = {
secureProtocol: 'SSLv23_method',
secureOptions: require('constants').SSL_OP_NO_SSLv3,
ca: fs.readFileSync('/etc/apache2/ssl/CA_Bundle.crt'),
key: fs.readFileSync('/etc/apache2/ssl/private.key'),
cert: fs.readFileSync('/etc/apache2/ssl/public.crt'),
passphrase: 'pssword'
},
app = express();
server = require('https').Server(options, app);
io = require('socket.io').listen(server);
server.listen(8050);
app.get('/', function (req, res) {
res.send("server..");
});
io.set('transports', ['websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling',
'polling']);
io.use(function(socket, next) {
var handshakeData = socket.request,
cookie =parseCookies(handshakeData);
if(!socket.handshake.query || !handshakeData.headers || !handshakeData.headers.cookie) {
next(new Error('-Error code:1')); //cookie transmitted
console.log('cookie transmitted');
return false;
}
else next();
});
io.sockets.on('connection', function (socket) {
console.log("\ncalled connection 8050.");
});
index.html
<script type="text/javascript" src="https://domain:8050/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('https://domain:8050',{
'sync disconnect on unload' : false,
'connect timeout': 10000,
'reconnect': false,
});
</script>
【问题讨论】: