我有一个在 Ubuntu 14.04 服务器上运行的 node.js 应用程序,我也依赖 apache,因为我的应用程序在后端使用 MySQL。我有 apache 在端口 8080 上运行,节点应用程序在端口 80 上侦听。(只是一些初步信息)所以我从letsencrpyt 获得了一个ssl 证书,但它似乎不适用于socket.io。
这是我的代码
应用程序.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");
然后在客户端我这样做
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
var socket = io.connect('https://localhost', {secure: true, port: 80});
这可能都是错误的,我该如何做到这一点,以便如果人们键入我的域“oncampus.ws”,他们会被重定向到 https 位置“ https://www.oncampus.ws ”?