Socket.IO ne peut pas se connecter via https

J'ai une application node.js, qui utilise socket.IO. Cela fonctionne bien sur http, mais lorsque vous essayez de vous connecter à la socket via https – rien ne se produit.
Voici une partie du code:

var fs = require('fs'); var ioHttp = require('socket.io').listen(8899, { 'flash policy port': -1 }); initSocket(ioHttp); var ioHttps = require('socket.io').listen(8895, { key: fs.readFileSync('/path/to/file/file.key'), cert: fs.readFileSync('/path/to/file/file.crt'), ca: [ fs.readFileSync('/path/to/file/sub.class1.server.ca.pem'), fs.readFileSync('/path/to/file/ca.pem') ], 'flash policy port': -1 }); initSocket(ioHttps); 

Et la fonction initSocket :

 function initSocket(io) { io.enable('browser client minification'); io.enable('browser client etag'); io.enable('browser client gzip'); io.set('transports', [ 'websocket', 'htmlfile', 'flashsocket', 'jsonp-polling' ]); io.sockets.on('connection', function (client) { //the connnection is handled here }); } 

Le client se connecte comme ceci:

 var secureConnection = false; var port = 8899; if (window.location.protocol === 'https:') { port = 8895; secureConnection = true; } var socket = io.connect('domain.org', {port: port, secure: secureConnection}); 

Comme je l'ai dit, tout fonctionne bien sur http, mais la connexion sur https me donne "La connexion a été interrompue". Qu'est-ce que je fais mal?

Vous ne pouvez pas initérer le serveur socket.io comme le serveur https . Vous devez commencer un serveur https séparé, puis attacher un serveur socket.io à celui-ci.

 var https = require('https'), fs = require('fs'); var options = { key: fs.readFileSync('ssl/server.key'), cert: fs.readFileSync('ssl/server.crt'), ca: fs.readFileSync('ssl/ca.crt') }; var app = https.createServer(options); io = require('socket.io').listen(app); //socket.io server listens to https connections app.listen(8895, "0.0.0.0");