我在找插座.io使用我的SSL证书运行,但它不会连接.

我的代码基于聊天示例:

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的请求

注意,它没有try https,这会导致它失败.

我正在chrome上测试,因为它是这个应用程序的目标浏览器.

如果这是一个简单的问题,我很抱歉,我是一个 node /套接字.我是新手.

谢谢

推荐答案

为初始连接使用安全URL,即使用"https://"而不是"http://".如果 Select 了WebSocket传输,则为Socket.IO也应该自动为WebSocket连接使用"wss://"(SSL).

Update:

您还可以try 使用"安全"选项创建连接:

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

Node.js相关问答推荐

postgresql层与应用层的序列化

条件内的表达式

谷歌应用程序脚本UrlFetchApp和nodejs-axios返回不同的结果;MyFitnessPal日记

通过 Node js 中的 TBA 执行 netsuite REST upsert 操作出现 401 错误

Node js 处理回调和 Promise

使用 playwright 获取页面中同一 url 的所有响应

当API返回400状态代码时,使用Reactjs fetch获取错误消息

动态设置元数据,无需重复请求 NextJS 13

Postgressql的BIGSERIAL自增序列,即使由于唯一约束错误没有创建行,也会自动增加

运行 cypress 测试时如何指定 .env 文件用于我的开发服务器?

为什么我的 npm 脚本中的 glob 不起作用?

图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到

users.watch(在 gmail google api 中)如何收听通知?

如何将使用 Gulp 的 node 部署到 heroku

如何获取在 NodeJS 中执行的脚本的文件名?

在多个文件 node.js 之间共享和修改变量

判断一个数组中的每个元素是否都在第二个数组中

gyp WARN EACCES 用户root没有访问开发目录的权限

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

找不到在 docker compose 环境中运行的 node js 应用程序的模块