node.js - 如何将 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 }));
因为目前我没有在任何地方设置主机。
解决方案
推荐阅读
- java - slf4j 记录器信息级别未登录 Apache Tomcat
- android - Android Studio 3.2.1:transformDexArchiveWithExternalLibsDexMergerForDebug 失败
- swift - 创建具有约束关联类型的协议数组
- ios - Secure Enclave:在创建密钥后更新 SecAccessControlCreateFlags
- node.js - 为什么在给定相同输入的情况下节点 scrypt 哈希值相同?
- r - 用于创建新变量的函数在 R 中不起作用
- java - 获取 SQLiteOpenHelper 构造函数的上下文
- sqlite - Sqlite3 Case 语句怪异
- ios - 从 Firebase 查询中检索深层数据(iOS、Swift 4)
- flutter - 如何处理不同的图标大小