NodeJS + Express + Socket.IO + SSL

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

我已经看了大约5个其他堆栈溢出问题,并查看了文档,以我的眼睛觉得他们要stream血的地步!

我已经得到了以下工作:

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! 

老实说,在Node前面做一些东西要容易得多(而且速度也要快一些 – Node的SSL支持还没有被优化得太好)。 我们在Node前面的HAProxy前面使用了Stud ,其他人现在只使用HAProxy来支持SSL。

螺柱安装非常容易,对我们来说已经很稳固。

较新版本的haproxy支持ssl。 Haproxy是令人难以置信的稳定和性能,我相信它处理其他(软件)解决scheme的SSL。 我花了一段时间试图让haproxy + socket.io(networking和闪存套接字支持)+ ssl工作。 我在这个博客上写了一些内容,这样其他人就可以避免花费太多的时间。

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

这个configuration对我们来说是非常棒的。

干杯,基督徒