Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
98
rated 0 times [  101] [ 3]  / answers: 1 / hits: 26618  / 11 Years ago, sat, march 16, 2013, 12:00:00

I have a node.js app, that uses socket.IO. It works fine on http, but when trying to connect to the socket through https - nothing happens.

Here's some part of the 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);


and the initSocket function:



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
});
}


The client connect like this:



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});


As I said everything works fine on http, but connecting on https gives me The connection was interrupted. What am I doing wrong?


More From » node.js

 Answers
33

You cannot initalize socket.io server like https server. You have to start a separate https server and then attach socket.io server to it.



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);

[#79559] Thursday, March 14, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
mckenna

Total Points: 445
Total Questions: 109
Total Answers: 109

Location: Virgin Islands (U.S.)
Member since Sun, May 16, 2021
3 Years ago
;