2014-12-19 56 views
0

在Heroku上使用RedisCloud和node.js允許(將來)縮放到多個dyno。'io'中沒有方法'adapter'(node.js,heroku,RedisCloud,socket.io)

了Redis的按照這方面的工作: https://devcenter.heroku.com/articles/rediscloud#using-redis-from-node-js

例如下面的註釋「打印‘欄’」行不寫「酒吧」到控制檯。

然後跟着這個添加socket.io,Redis的縮放: https://github.com/Automattic/socket.io-redis

上面應該允許我使用類似以下內容:

io.adapter(redis({ host: 'localhost', port: 6379 })); 

在我的代碼等效下面是:

io.adapter(ioredis (redisOptions)); 

不過,我一直得到一個錯誤,指出IO沒有方法「適配器」。

或者如果我先用'if'語句檢查io.adapter是否存在(如下面的代碼所示),那麼條件代碼從未執行。

任何人都可以看到我在做什麼錯在這裏?爲什麼不存在io.adapter?

中的package.json

"dependencies": { 
    "redis": "^0.12.1", 
    "express": "^3.4.8", 
    "socket.io": "^0.9.16", 
    "socket.io-redis":"^0.1.4" 
    } 

也嘗試添加這的package.json

"socket.io-adapter": "^0.2.0" 
在app.js

(我的節點服務器的代碼):

var express = require('express') 
, app = express() 
, http = require('http') 
, server = http.createServer(app) 
, io = require('socket.io').listen(server) 
, redis = require('redis') 
, ioredis = require('socket.io-redis') 
, url = require('url') 
, redisURL = url.parse(process.env.REDISCLOUD_URL); 

後來在app.js中:

io.sockets.on('connection', function (socket) { 
    var pub1 = redis.createClient(redisURL.port, redisURL.hostname, {return_buffers: true}); 
    var sub1 = redis.createClient(redisURL.port, redisURL.hostname, {return_buffers: true}); 
    pub1.auth(redisURL.auth.split(":")[1]); 
    sub1.auth(redisURL.auth.split(":")[1]); 

    var redisOptions = { 
     pubClient: pub1, 
     subClient: sub1, 
     host: redisURL.hostname, 
     port: redisURL.port 
    }; 
    pub1.set('foo', 'bar'); 
    sub1.get('foo', function (err, reply) { 
    console.log("redis test : "+reply.toString()); 
    // Prints 'bar' 
     }); 
    if (io.adapter) { 
     // Never reached 
     io.adapter(ioredis (redisOptions)); 
     console.log ("mylog: io.adapter found");  
    } 
    console.log ("mylog server connection event fired"); 

回答

1

socket.io-redis旨在與socket.io 1.x一起使用。

0.9.x版本沒有適配器。

+0

在package.json中更改爲以下內容:「socket.io」:「^ 1.0.0」,並且適配器在那裏!謝謝你Barış! – user1147171 2014-12-19 19:48:09

相關問題