【发布时间】:2020-09-28 15:12:00
【问题描述】:
也就是说,我创建了一个自签名证书:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
然后我使用这个服务器代码:
var express = require('express');
var app = express();
var fs = require('fs');
app.use(express.static('public'));
const server = require('https').createServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
},
app);
var io = require('socket.io')(server);
server.listen(1437, function () {
console.log('https and websocket listening on *:1437');
});
但是,当我尝试使用 socket.io 客户端连接时,我收到了这个错误:
index.js:83 GET https://localhost:1437/socket.io/?framespersecond=15&audioBitrate=22050&EIO=3&transport=polling&t=NJLEHQL net::ERR_CERT_AUTHORITY_INVALID
如果我只是将 URL 复制并粘贴到浏览器 URL 字段中,我会收到相同的错误,所以这不是 socket.io 客户端的问题,而是服务器错过了配置。
我尝试创建一个 CA 文件并在对 createServer 的调用中指定它,但它也不起作用。
有什么帮助吗?
詹姆
【问题讨论】:
-
我想你必须用express配置socket io吗? '
const ios = require(‘socket.io’)(secureServer);好像你在教程中错过了这个。 -
@AvivLo 对不起,我不知道代码很重要,所以我没有将它添加到问题中。我已经有了这个: var io = require('socket.io')(server);但是,它仅用于 io.on('connection', function (socket) { }。我认为这与证书问题无关。