0

我有一个在 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 ”?

4

0 回答 0