feat: prepare redis subsystem for unix domain socket connections
This commit is contained in:
parent
34f1b9cb65
commit
640e7d79b3
2 changed files with 24 additions and 5 deletions
|
|
@ -50,13 +50,27 @@ function get_conf() {
|
|||
if (process.env.FRAPPE_SOCKETIO_PORT) {
|
||||
conf.socketio_port = process.env.FRAPPE_SOCKETIO_PORT;
|
||||
}
|
||||
if (process.env.FRAPPE_SOCKETIO_UDS) {
|
||||
conf.socketio_uds = process.env.FRAPPE_SOCKETIO_UDS;
|
||||
}
|
||||
return conf;
|
||||
}
|
||||
|
||||
function get_redis_subscriber(kind = "redis_queue", options = {}) {
|
||||
const conf = get_conf();
|
||||
const host = conf[kind];
|
||||
return redis.createClient({ url: host, ...options });
|
||||
const connStr = conf[kind];
|
||||
let client;
|
||||
// TODO: revise after https://github.com/redis/node-redis/issues/2530
|
||||
// is solved for a more elegant implementation
|
||||
if (connStr && connStr.startsWith("unix://")) {
|
||||
client = redis.createClient({
|
||||
socket: { path: connStr.replace("unix://", "") },
|
||||
...options,
|
||||
});
|
||||
} else {
|
||||
client = redis.createClient({ url: connStr, ...options });
|
||||
}
|
||||
return client;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
const { Server } = require("socket.io");
|
||||
const http = require("node:http");
|
||||
|
||||
const { get_conf, get_redis_subscriber } = require("../node_utils");
|
||||
const conf = get_conf();
|
||||
|
||||
let io = new Server({
|
||||
const server = http.createServer();
|
||||
|
||||
let io = new Server(server, {
|
||||
cors: {
|
||||
// Should be fine since we are ensuring whether hostname and origin are same before adding setting listeners for s socket
|
||||
origin: true,
|
||||
|
|
@ -55,6 +58,8 @@ const subscriber = get_redis_subscriber();
|
|||
})();
|
||||
// =======================
|
||||
|
||||
let uds = conf.socketio_uds;
|
||||
let port = conf.socketio_port;
|
||||
io.listen(port);
|
||||
console.log("Realtime service listening on: ", port);
|
||||
server.listen(uds || port, () => {
|
||||
console.log("Realtime service listening on: ", uds || port);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue