为 https 连接创建 socket.io 服务器
Creating a socket.io server for https connections
即我创建了一个自签名证书:
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
的调用中指定它,但它也不起作用。
有什么帮助吗?
海梅
原来使用openssl生成证书时出现问题
我真的不知道发生了什么,但由于我已经颁发了一个自签名证书(Visual Studio 在开发要使用 IISEXPRESS 调试的站点时使用的证书),我导出了该证书使用 Digicert 实用程序,我最终可以使用 socket.io.
进行连接
问候
海梅
即我创建了一个自签名证书:
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
的调用中指定它,但它也不起作用。
有什么帮助吗?
海梅
原来使用openssl生成证书时出现问题
我真的不知道发生了什么,但由于我已经颁发了一个自签名证书(Visual Studio 在开发要使用 IISEXPRESS 调试的站点时使用的证书),我导出了该证书使用 Digicert 实用程序,我最终可以使用 socket.io.
进行连接问候 海梅