https 上集群的套接字 IO 不起作用

Lal*_*ogi 8 node.js socket.io

根据 Socket IO 文档,我可以使用 http,但不能使用 https。我正在使用带有 http 集群的套接字 io,它工作正常,但当我在其上实现 https 时却无法工作。
我正在使用的套接字 IO 文档:- https://socket.io/docs/v4/cluster-adapter/

我的代码是

const cluster = require("cluster");
const https = require("https");
var fs = require("fs");
const { Server } = require("socket.io");
const numCPUs = require("os").cpus().length;
const { setupMaster, setupWorker } = require("@socket.io/sticky");
const { createAdapter, setupPrimary } = require("@socket.io/cluster-adapter");
const sslOptions = {
  key: fs.readFileSync("security/cert.key"),
  cert: fs.readFileSync("security/cert.pem")
};
const options = { cors: true, origins: "*" };
if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  const httpServer = https.createServer(sslOptions);

  // setup sticky sessions
  setupMaster(httpServer, {
    loadBalancingMethod: "least-connection"
  });

  setupPrimary();

  cluster.setupPrimary({
    serialization: "advanced"
  });

  httpServer.listen(8000);

  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on("exit", (worker) => {
    console.log(`Worker ${worker.process.pid} died`);
    cluster.fork();
  });
} else {
  console.log(`Worker ${process.pid} started`);

  const httpServer = https.createServer(sslOptions);

  const io = new Server(httpServer, options);

  // use the cluster adapter
  io.adapter(createAdapter());

  // setup connection with the primary process
  setupWorker(io);

  io.on("connection", (socket) => {
    console.log("connected" + process.pid);
    io.emit("data", "connected to worker: " + cluster.worker.id);
  });
}
Run Code Online (Sandbox Code Playgroud)

小智 0

代码没有问题,由于 ssl 证书,可能的错误可能是“安全连接失败”。否则相同的代码对我有用。