首页 > 解决方案 > 如何将 express 与 httpServer 一起用于具有 SocketIO 的节点集群?

问题描述

当前在 Heroku 上运行服务器,并希望按照本教程实现 Node.js 集群。但是,目前我使用 express 来监听所有服务器:

const app = express();
app.use(express.json())
var server = app.listen(process.env.PORT || 4000, () => {
    console.log('now listening for requests on port: ' + server.address().port);
    wakeUpDyno(process.env.DYNO_URL);
    dailyReminders();
    remindGroupMembers();
    kickOutInactiveMembers();
});
var io = socket_io(server)

但是,如果集群不是主集群,本教程会创建一个这样的连接:

  const httpServer = http.createServer();
  const io = new Server(httpServer);
  io.adapter(redisAdapter({ host: "localhost", port: 6379 }));

或者如果集群是主集群:

  const httpServer = http.createServer();
  setupMaster(httpServer, {
       loadBalancingMethod: "least-connection", // either "random", "round-robin"     
       or "least-connection"
   });
  httpServer.listen(3000);

如果我使用 Express,是否还需要在某些时候调用 app.listen()?我可以将当​​前调用的函数app.listen()放入

httpServer.listen(process.env.PORT, () {
    //functions here
})

最后,我的主机将用于什么, io.adapter(redisAdapter({ host: "localhost", port: 6379 }));因为目前我没有在任何地方设置主机。

标签: node.jsherokusocket.io

解决方案


推荐阅读