【问题标题】:Socket IO with cluster on https not workinghttps 上带有集群的套接字 IO 不起作用
【发布时间】:2022-01-11 12:31:24
【问题描述】:

根据 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);
  });
}

【问题讨论】:

  • 你能描述一下“不工作”的确切含义吗?你有任何错误信息吗?你面对什么样的行为,你会期待什么? .
  • @SilvanBregy 感谢您的回复 Socket IO 未从客户端连接。此外,如果 Socket IO 正在您的端口上运行,则 socketio.js 文件会自动生成,但此处不显示任何 socketio.js 文件。同样,我使用 http 运行它的工作正常
  • 用 express.js 试试这个答案,(stackoverflow.com/a/38525463/13460667)。我知道这不是你问的,但你可以尝试找到你缺少的任何东西。

标签: node.js socket.io


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多