当前位置: 首页 > 面试题库 >

使用SSL的node.js,socket.io

易波涛
2023-03-14
问题内容

我正在尝试使用我的SSL证书运行socket.io,但是它将无法连接。

我基于聊天示例创建代码

var https = require('https');
var fs = require('fs');
/**
 * Bootstrap app.
 */
var sys = require('sys')
require.paths.unshift(__dirname + '/../../lib/');

/**
* Module dependencies.
*/

var express = require('express')
  , stylus = require('stylus')
  , nib = require('nib')
  , sio = require('socket.io');

/**
 * App.
 */
var privateKey = fs.readFileSync('../key').toString();
var certificate = fs.readFileSync('../crt').toString();
var ca = fs.readFileSync('../intermediate.crt').toString();

var app = express.createServer({key:privateKey,cert:certificate,ca:ca });


/**
 * App configuration.
 */

...

/**
 * App routes.
 */

app.get('/', function (req, res) {
  res.render('index', { layout: false });
});

/**
 * App listen.
 */

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

/**
 * Socket.IO server (single process only)
 */

var io = sio.listen(app,{key:privateKey,cert:certificate,ca:ca});
...

如果我删除SSL代码,它运行正常,但是与此同时,我收到了一个请求,请求http://domain.com/socket.io/1/?t=1309967919512

请注意,它没有尝试使用https,这会导致它失败。

我正在测试chrome,因为它是该应用程序的目标浏览器。

抱歉,这是一个简单的问题,我是node / socket.io新手。

谢谢!


问题答案:

使用安全的URL进行初始连接,即使用“ https://”代替“ http://”。如果选择了WebSocket传输,则Socket.IO也应自动将“
wss://”(SSL)用于WebSocket连接。

更新

您也可以尝试使用“安全”选项创建连接:

var socket = io.connect('https://localhost', {secure: true});


 类似资料:
  • 问题内容: 如何使用Node.js通过SSL连接到MongoDB服务器? 我已经阅读了一些驱动程序(mongojs,mongodb- native )的源代码,并且我已经搜索了一段时间,但是似乎找不到任何合适的教程,指南或文档。 问题答案: 如评论中所建议,具有所需的一切。 我使用以下命令启动并运行: 编辑 你也可以从猫鼬做ssl :

  • 问题内容: 我正在尝试通过节点https.request()获得一个网页。这样做会导致我的代码记录错误。使用节点请求模块具有相同的结果: 请求的问题:140398870042432:错误:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报意外消息:s23_clnt.c:658: 以下内容指示使用了错误的SSL版本,但我找不到更改版本的方法:url错误:“ss

  • 问题内容: 我无法让我的SSL服务器与Godaddy的证书一起使用 使用Express:3.1.0 在此之下,可以使用本地生成的密钥/ crt /未经go daddy签名的密钥/ crt(浏览器会抱怨,但是如果添加异常,它将起作用。 通过Godaddy,我提供了一个额外的文件gd_bundle.crt,我相信您可以像这样实现,但是我遇到了错误 通过这种配置,我得到:错误107(net :: ERR

  • 问题内容: 我正在通过GoDaddy设置SSL,以与AWS EC2上的node.js服务器一起使用。我一直无法启动它。 这是我尝试过的: 打算用于域:files.mysite.com 在服务器上,我运行: 然后,我得到CSR:vim files.mysite.csr 我从以下位置复制并粘贴: 最后还有一个空行,我使用rekey离开并粘贴到GoDaddy界面中。 然后,我下载godaddy密钥,该密

  • 我的网站流量通过Cloudflare激活了完整的通用SSL。 在apache虚拟主机中,我有以下配置: 我的Node.js服务器通过HTTPS:

  • 我试图使用Cloudflare为CDN/保护运行带有Node.js+Socket.io的Apache,但是出了问题。 我用来在node.js上创建服务器的代码是 我实际上是在使用ProxyPass来处理子域“API”。传递给node.js/express: 这是工作的,但webosocket不是。没有Apache(直接在Express上运行),所有工作都很好,包括WebSocket。但是,我也需要