NodeJS + Express + Socket.IO + SSL



所以我试图使用NodeJS与Express + Socket.IO。

我已经看了大约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证书位置和域名。

编辑:

运行时:

[root@example exampleapp]# node app.js
   info  - socket.io started
Server a-hoy!

新版本的haproxy支持ssl。Haproxy非常稳定和高性能,我相信它可以通过其他(软件)解决方案来处理ssl。我花了相当多的时间试图得到haproxy + socket。IO (web和flash socket支持)+ SSL工作。我把它写在博客上,这样别人就可以避免在上面花那么多时间。

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

这个配置对我们来说非常棒。

欢呼,基督教

老实说,在Node前面做SSL要容易得多(而且更快——Node的SSL支持还没有得到很好的优化)。我们在Node前面的HAProxy前面使用Stud,其他人现在只使用HAProxy,因为它支持SSL。

Stud非常容易设置,并且对我们来说一直是坚不可摧的。

最新更新