node.js - NodeJS + Express + Socket.IO + SSL

标签 node.js ssl https express socket.io

所以我正在尝试将 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(网络和闪存套接字支持)+ ssl 工作。我将其写成博客,这样其他人就可以避免在这上面花费太多时间。

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

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

干杯, 基督徒

关于node.js - NodeJS + Express + Socket.IO + SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515852/

相关文章:

angularjs - 如何在指令中使用/同步 Controller 的数据?

node.js - yosemite 升级后 npm 找不到 npm-cli 模块

http - 如何为单个 HTTP 请求使用多个证书?

ssl - https发送数据时是否需要验证checksum

node.js - Sqlite3、 Electron 、webpack : cannot find module abi_crosswalk. json

angularjs - 在单个 Controller MEAN.IO 中使用多个模型

encryption - rsyslog 中的 ssl 加密

python - 使用 Python 'requests' 库的 HTTPS POST 请求的不一致 IOError 异常

ssl - 在 HTTPS 连接中的 SSL 握手期间,客户端如何在加密传输开始之前安全地向服务器发送 secret

java - 使用 SSL 在负载平衡环境中设置 flex 应用程序的问题