Como configurar o RedisStore - Node, Express, Socket.io, Heroku
Estou usando o Node & Express 4.0 implantado no Heroku e estou tentando implementar o Socket.io com o Redis como um armazenamento de sessão. Então, eu tenho isso como meu código atual:
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var RedisStore = io.RedisStore;
if (process.env.REDISTOGO_URL) {
// inside if statement
var rtg = require("url").parse(process.env.REDISTOGO_URL);
var redis = require("redis").createClient(rtg.port, rtg.hostname);
redis.auth(rtg.auth.split(":")[1]);
} else {
var redis = require("redis").createClient();
}
/** Initialize RedisStore for socket.io **/
io.set('store', new RedisStore({
redis : redis
}));
Mas eu recebo o seguinte erro:
14:25:03 web.1 | io.set('store', new RedisStore({
14:25:03 web.1 | ^
14:25:03 web.1 | TypeError: undefined is not a function
Eu também vi essa maneira de definir um RedisStore:
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
No entanto, minha versão instalada do socket.io, instalada usandonpm install --save socket.io
, não incluistores
nolib
diretório:
EDITAR
Eu vi isso na página socket.io em relação à versão 1.0:
// 2. Implement the socket.io-redis adapter
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
Mas não há outra documentação que eu possa encontrar sobre esse novo módulo e, como sou novo em toda essa pilha, acho que não conseguiria descobrir sozinho.