Как подключить ssl сертификат на сервер на socket.io, node.js, redis, express.js?

Сделал socket.io сервер по туториалу. Появилась проблема с подключением к серверу через https запрос. Объясните, пожалуйста, как подключить ssl сертификаты конкретно в данном случае.
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(8890);

io.on('connection', function (socket) {

    console.log("new client connected");

    var redisClient = redis.createClient();

    redisClient.subscribe('notification');

    redisClient.on("message", function(channel, message) {
        console.log("New message: " + message + ". In channel: " + channel);
        socket.emit(channel, message);
    });

    socket.on('disconnect', function() {
        redisClient.quit();
    });

});
  • Вопрос задан
  • 4746 просмотров
Решения вопроса 1
copist
@copist
Empower people to give
// Create context using SSL for socket.io
var fs = require('fs'),
    express = require('express'),
    socketio = require('socket.io'),
    config = require('./config');

var serverPort = config.port || 8765, // Listen port
    secure = config.secure || false; // use HTTPS/SSL

var app = express();
if (secure)
{
    var options = {
        key: fs.readFileSync(config.secure_key),
        cert: fs.readFileSync(config.secure_cert)
    };
    var server = require('https').createServer(options, app);
} else
{
    var server = require('http').createServer(app);
}

server.listen(serverPort, function() {
  var addr = server.address();
  console.log('   app listening on ' + (secure ? 'https://' : 'http://') + addr.address + ':' + addr.port);
});

var io = socketio(server);
// и так далее для io.listen и прочее


Файл config.json
{
    "port": "9876",
    "secure": true,
    "secure_key" : "./ssl_certificate.key",
    "secure_cert" : "./ssl_certificate.crt"
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
savostin
@savostin
Еще один программист
А чего это он у вас в мир смотрит? Ставьте nginx наружу, а в нем уже ssl, кеширование, балансировка и пр. штучки.
Понимаю, что не ответ, но имхо так правильнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы