2013-05-13 4 views
1

Итак, я пытаюсь использовать NodeJS с Express + Socket.IO.NodeJS + Express + Socket.IO + SSL

Я рассмотрел около 5 вопросов о переполнении стека и просмотрел документацию до тех пор, пока мои глаза не почувствуют, что они истекут кровью!

У меня есть, что работать следующим:

var fs   = require('fs'), 
    privateKey = fs.readFileSync('/path/to/private.key').toString(), 
    certificate = fs.readFileSync('/path/to/certificate.crt').toString(); 

var options = { 
        key: privateKey, 
        cert: certificate 
       }; 

var express = require('express'), 
    app  = express(express.logger()), 
    https = require('https'), 
    server = https.createServer(options, app), 
    io  = require('socket.io').listen(server), 
    routes = require('./routes'); 

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 


server.listen(5050, function() { 
    console.log("Server a-hoy!"); 
}); 

app.get('/', routes.index); 

io.sockets.on('connection', function (socket) { 
    socket.on('givemeresults', function (data) { 
    io.sockets.emit('results', { some: 'data' }); 
    }); 
}); 

за то, что, когда я запускаю это за исключением:

curl https://test.something.net:5050 

я получаю следующее (не хотел) результатов

curl: (35) Unknown SSL protocol error in connection to test.something.net:5050 

Все это означает, что мы можем использовать Socket.io на фоне нашей реальной веб-страницы для доставки информации ион обратно к пользователю.

Это работает, когда я использую обычный http. Сертификаты также правильны.

У вас возникли какие-либо возможные причины для этого?

Мне пришлось удалить существующие местоположения сертификатов SSL и имя домена по соображениям безопасности.

Edit:

При работе:

[[email protected] exampleapp]# node app.js 
    info - socket.io started 
Server a-hoy! 

ответ

1

Честно говоря, это гораздо проще, чтобы иметь что-то перед узлом сделать SSL (и быстрее тоже - поддержка SSL в Node не оптимизированы слишком хорошо все же). Мы используем Stud перед HAProxy перед узлом, другие используют только HAProxy теперь, когда у него есть поддержка SSL.

Стад очень прост в настройке и был для нас настоящим.

2

Новые версии поддержки haproxy ssl. Haproxy невероятно стабилен и работоспособен, и я считаю, что он обрабатывает ssl над другими (программными) решениями. Я потратил довольно много времени, пытаясь получить haproxy + socket.io (поддержка веб-и флеш-сокетов) + ssl. Я писал об этом, чтобы другие могли не тратить на это столько времени.

http://blog.carbonfive.com/2013/05/02/using-haproxy-with-socket-io-and-ssl/

Эта конфигурация работает довольно удивительным для нас.

Приветствия, Christian

+0

Жаль, что я наткнулся на это раньше! Я использую Nginx, и он работает (я думаю). Следующая проблема для меня - это использовать кластеры и socket.io (woo-heee!) –

Смежные вопросы