Node.js 是否存在通过apache使用HTTPS的Socket.IO?

Node.js 是否存在通过apache使用HTTPS的Socket.IO?,node.js,https,socket.io,Node.js,Https,Socket.io,我有一个域名 我有一个树莓Pi作为web服务器 我已经编辑了域的一条记录,将其指向我的服务器的IP 通过letsencrypt,我得到了一个证书,现在网站使用https协议(保持http为调试目的) 我正在开发一个messenger应用程序,该应用程序使用socket.io,但使用apache+php处理低级内容 基本上apache听80和443,nodejs听3000 显然,如果我通过http访问我的站点,一切正常,服务器和客户端都注册连接 如果我通过https访问它,Chrome会抛出net

我有一个域名

我有一个树莓Pi作为web服务器

我已经编辑了域的一条记录,将其指向我的服务器的IP

通过letsencrypt,我得到了一个证书,现在网站使用https协议(保持http为调试目的)

我正在开发一个messenger应用程序,该应用程序使用socket.io,但使用apache+php处理低级内容

基本上apache听80和443,nodejs听3000

显然,如果我通过http访问我的站点,一切正常,服务器和客户端都注册连接

如果我通过https访问它,Chrome会抛出net::ERR_CONNECTION_CLOSED错误(在控制台中,当尝试通过端口3000连接到socket.io时,站点本身会正常加载)

客户:

var socket=newio(window.location.host+“:3000”,{secure:true});
socket.on(“连接”,函数(){
console.log('success')
});
服务器:

const io=require(“socket.io”);
const server=io.listen(3000);
log(“服务器已启动”);
打开服务器(“连接”,函数(套接字){
控制台日志(“+用户”);
发射(“你好”,“已连接”);
});
我真的不想使用express或其他任何东西来尽可能地使一切尽可能小,特别是因为我已经有一个web服务器在运行

如何正确设置它,以便用户通过https协议访问站点时可以连接到端口3000上的my socket.io服务器

更新: 从表面上看,我认为这是一个CORS类型的问题。通过https访问网站的用户试图连接到一个不安全的端口(本例为3000),即使它是同一个域?如果不是所有的浏览器,我想这对很多人来说都是不可能的。
我想到了一个解决方案,将整个东西从apache移动到nodejs服务器模块,并通过https模块手动将端口3000分配为安全端口,但我不知道该怎么做,我真的想把我的apache作为一个web服务器,因为至少我对它比其他任何东西都熟悉。

我最终创建了一个单独的https服务器,我假设socket.io会监听它(?) 幸好我仍然把apache作为主服务器。我用这篇文章部分回答了我的问题

服务器

const fs=require(“fs”);
const https=require(“https”);
变量选项={
key:fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
证书:fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem'))
};
var server=https.createServer(选项);
听(3000);
var io=require('socket.io')。侦听(服务器);
log(“服务器已启动”);
io.on(“连接”,功能(插座){
控制台日志(“+用户”);
发射(“你好”,“已连接”);
socket.on(“断开连接”),()=>{
console.log(“-USER”);
})
});
客户端

var s=新io(“https://example.com:3000“,{secure:true});
希望这是正确的方法