So stellen Sie RedisStore ein - Node, Express, Socket.io, Heroku
Ich verwende Node & Express 4.0, das auf Heroku bereitgestellt wurde, und ich versuche, Socket.io mit Redis als Sitzungsspeicher zu implementieren. Also habe ich das als meinen aktuellen Code:
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
}));
Aber ich bekomme folgenden Fehler:
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
Ich habe auch diese Art der Definition eines RedisStore gesehen:
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
Allerdings ist meine installierte Version von socket.io mit installiertnpm install --save socket.io
nicht enthaltenstores
in demlib
Verzeichnis:
BEARBEITEN
Ich habe dies auf der socket.io-Seite in Bezug auf ihre 1.0-Version gesehen:
// 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 }));
Aber es gibt keine andere Dokumentation, die ich zu diesem neuen Modul finden könnte, und da ich neu in diesem ganzen Stapel bin, glaube ich nicht, dass ich es alleine herausfinden könnte.