mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
60 lines
1.4 KiB
JavaScript
Executable File
60 lines
1.4 KiB
JavaScript
Executable File
import { createClient } from "redis"
|
|
import { createAdapter } from "@socket.io/redis-adapter"
|
|
|
|
function composeURL() {
|
|
// support for auth
|
|
let url = "redis://"
|
|
|
|
url += process.env.REDIS_HOST ?? "localhost"
|
|
|
|
if (process.env.REDIS_PORT) {
|
|
url += ":" + process.env.REDIS_PORT
|
|
}
|
|
|
|
return url
|
|
}
|
|
|
|
export default ({
|
|
withWsAdapter = false
|
|
} = {}) => {
|
|
let clientOpts = {
|
|
url: composeURL(),
|
|
}
|
|
|
|
if (!process.env.REDIS_NO_AUTH) {
|
|
if (process.env.REDIS_PASSWORD) {
|
|
clientOpts.password = process.env.REDIS_PASSWORD
|
|
}
|
|
|
|
if (process.env.REDIS_USERNAME) {
|
|
clientOpts.username = process.env.REDIS_USERNAME
|
|
}
|
|
}
|
|
|
|
let client = createClient(clientOpts)
|
|
|
|
if (withWsAdapter) {
|
|
client.subClient = client.duplicate()
|
|
client.ioAdapter = global.ioAdapter = createAdapter(client, client.subClient)
|
|
}
|
|
|
|
client.initialize = async () => {
|
|
console.log("🔌 Connecting to Redis client...")
|
|
|
|
await client.connect()
|
|
|
|
return client
|
|
}
|
|
|
|
// handle when client disconnects unexpectedly to avoid main crash
|
|
client.on("error", (error) => {
|
|
console.error("❌ Redis client error:", error)
|
|
})
|
|
|
|
// handle when client connects
|
|
client.on("connect", () => {
|
|
console.log("✅ Redis client connected.", process.env.REDIS_HOST)
|
|
})
|
|
|
|
return client
|
|
} |