I have a node.js application running on a Ubuntu 14.04 server, I also depend on apache because my application uses MySQL on the backend. I have apache running on port 8080 and the node app listening on port 80. (Just some preliminary information) So I got a ssl cert from letsencrpyt but It doesn't seem to be working with socket.io.
Here is my code
app.js
var favicon = require('serve-favicon');
var crypto = require("crypto");
var mysql = require('mysql');
var http = require('http');
var fs = require('fs');
var _favicon = favicon(__dirname + '/favicon.ico');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
port: '3306',
password: 'password',
database : 'database'
});
connection.connect(function(err){
if(!err) {
console.log("mysql connected");
} else {
console.log(err);
}
});
var https = require('https');
var options = {
key: fs.readFileSync('../privkey.pem'),
cert: fs.readFileSync('../cert.pem')
};
var server = https.createServer(options,
function(req, response){
fs.readFile(__dirname + '/index.html',
function(err, data){
if(err){
response.writeHead(500);
return response.end('error');
} else {
_favicon(req, response, function onNext(err){
if(err){
response.writeHead(200);
response.end(data);
} else {
response.writeHead(200);
response.end(data);
}
});
}
})
});
var io = require('socket.io').listen(server);
server.listen(80, "0.0.0.0");
and then on the client side I do this
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
var socket = io.connect('https://localhost', {secure: true, port: 80});
this is probably all wrong and also how do I make it so that if people type my domain "oncampus.ws" they get redirected to the https location "https://www.oncampus.ws" ?