socket.io-redis-emitter
socket.io-redis-emitter copied to clipboard
Error: Cluster is not connected
It looks like this library (and @socket.io/redis-adapter) are both incompatible with using createCkuster
in the redis library
I am getting the following error:
Error: Cluster is not connected
at RedisClusterSlots._RedisClusterSlots_getRandomClient (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js:193:15)
at RedisClusterSlots.getClient (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js:54:120)
at Commander._RedisCluster_execute (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/cluster/index.js:102:73)
at Commander.sendCommand (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/cluster/index.js:65:98)
at Commander.commandsExecutor (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/cluster/index.js:62:75)
at Commander.BaseClass.<computed> [as publish] (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@redis/client/dist/lib/commander.js:8:29)
at BroadcastOperator.emit (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/@socket.io/redis-emitter/dist/index.js:262:26)
at Socket.<anonymous> (/Users/aronlilland/Documents/dev/controlair/notifications/src/sockets/index.js:61:36)
at Socket.emit (node:events:527:28)
at Socket.emitUntyped (/Users/aronlilland/Documents/dev/controlair/notifications/node_modules/socket.io/dist/typed-events.js:69:22)
// mock example
const { createCluster } = require('redis')
const { Emitter } = require('@socket.io/redis-emitter')
const { Server } = require('socket.io')
const app = express()
const server = require('http').Server(app)
const log = require('../logger')('cache:client')
const rootNodes = [
{ url: `redis://${process.env.REDIS_HOST_1}` },
{ url: `redis://${process.env.REDIS_HOST_2}` },
{ url: `redis://${process.env.REDIS_HOST_3}` }
]
const client = createCluster({ rootNodes })
client.on('error', err => log.error(`Redis Cluster Error ${err}`))
const emitter = new Emitter(client)
// ...
const io = new Server(server)
io.on('connection', socket => {
socket.on('event', event => {
emitter.in('room1').emit('<some event>, event)
})
})
using Node v16.15.0
redis@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/redis/-/redis-4.1.0.tgz#6e400e8edf219e39281afe95e66a3d5f7dcf7289"
integrity sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==
dependencies:
"@redis/bloom" "1.0.2"
"@redis/client" "1.1.0"
"@redis/graph" "1.0.1"
"@redis/json" "1.0.3"
"@redis/search" "1.0.6"
"@redis/time-series" "1.0.3"
"@socket.io/redis-emitter@^4.1.1":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@socket.io/redis-emitter/-/redis-emitter-4.1.1.tgz#f274cf03cc9de7961b3224682479c27dc0ad9ade"
integrity sha512-N0wfcfcVJvPF1AjIlZ5efxGCz+8uY6qeCwIaRU+QUCNdqvtXQtlC/MtUJQCwVqs1MWP6Bv3TDuZGC04gIj7YuQ==
dependencies:
debug "~4.3.1"
notepack.io "~2.1.0"
socket.io-parser "~4.0.4"
Hi! I think you are missing client.connect()
.
Reference: https://socket.io/docs/v4/redis-adapter/#usage-1
Closed due to inactivity, please reopen if needed.