-
Notifications
You must be signed in to change notification settings - Fork 490
Description
When I am trying to do and io.emit(), I receive this error:
Error: Connection in subscriber mode, only subscriber commands may be used
at Redis.sendCommand (/home/ubuntu/ridemetry-iridium-mo/node_modules/ioredis/lib/redis.js:562:20)
at tryConnection (/home/ubuntu/ridemetry-iridium-mo/node_modules/ioredis/lib/cluster/index.js:537:13)
at Cluster.sendCommand (/home/ubuntu/ridemetry-iridium-mo/node_modules/ioredis/lib/cluster/index.js:479:3)
at Cluster.publish (/home/ubuntu/ridemetry-iridium-mo/node_modules/ioredis/lib/commander.js:131:17)
at Redis.broadcast (/home/ubuntu/ridemetry-iridium-mo/node_modules/socket.io-redis/index.js:414:11)
at Namespace.emit (/home/ubuntu/ridemetry-iridium-mo/node_modules/socket.io/lib/namespace.js:230:16)
at Server.(anonymous function) [as emit] (/home/ubuntu/ridemetry-iridium-mo/node_modules/socket.io/lib/index.js:456:29)
at deviceService.getDeviceByImei.then.device (/home/ubuntu/ridemetry-iridium-mo/server.js:175:32)
at tryCatcher (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/promise.js:693:18)
at Async._drainQueue (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/ubuntu/ridemetry-iridium-mo/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:789:20)
at tryOnImmediate (timers.js:751:5)
at processImmediate [as _immediateCallback] (timers.js:722:5)
Code :
const app = require('express')();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const Redis = require('ioredis');
const redisAdapter = require('socket.io-redis');
const cluster = new Redis.Cluster([ { port: Number(process.env.REDIS_PORT), host: process.env.REDIS_HOST } ]);
io.adapter(redisAdapter({ pubClient: cluster, subClient: cluster }));
io.emit('message', { test: 'test' });