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.ionicht 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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage