I have a redisClient and configured a separate publisher and subscriber with duplicate although I am not sure I need both of them. Redis server works ok and redisClient can write/read from the server correctly. This is the code:
const client = redis.createClient();
redisClient = await client.on('error', err => console.log('Redis Client Error', err)).connect();
publisher = client.duplicate();
await publisher.connect();
subscriber = client.duplicate();
await subscriber.connect();
subscriber.on('message', (channel, message) => console.log('received'));
subscriber.subscribe('abc123');
publisher.publish('abc123','lala');
and I get this error, the source of it starts at the line of subscriber.connect();
Uncaught TypeError TypeError: listener is not a function at _PubSub_emitPubSubMessage (c:\src\server\node_modules@redis\client\dist\lib\client\pub-sub.js:304:9) at handleMessageReply (c:\src\server\node_modules@redis\client\dist\lib\client\pub-sub.js:233:93)
The subscriber listener should be provided as the second parameter to the subscribe
function, not to the subscriber
istance.
const client = redis.createClient();
redisClient = await client.on('error', err => console.log('Redis Client Error', err)).connect();
const publisher = client.duplicate();
await publisher.connect();
const subscriber = client.duplicate();
await subscriber.connect();
// subscriber.on('message', (channel, message) => console.log('received')); --> This line is useless
subscriber.subscribe('abc123', (channel, message) => console.log('received')); // --> Instead, you need to listen for messages here
publisher.publish('abc123','lala');
You can read more here