2015-06-22 92 views
0

我想在heroku.i上部署我的应用程序,在我的app.it中添加了redistogo插件,它基于node.js和express。socket.io-redis在heroku上给出错误

我写了一小段代码

var redis = require('socket.io-redis'); 

var io = require('socket.io')(server); 
io.adapter(redis(process.env.REDISTOGO_URL)); 

但最后一行我得到错误:

Error: Redis connection to redistogo:6379 failed - getaddrinfo ENOTFOUND redistogo 

任何一个可以帮助为什么我面对这个错误,远离error.6379的是默认端口,但我的redistogo网址没有6379端口号。它的端口号是10281.

这是一个错误在socket.io-redis模块或我做错了什么?

回答

1

如果您的Redis在端口10281上运行,则需要在初始化适配器时对其进行设置。

var io = require('socket.io')(3000); var redis = require('socket.io-redis'); io.adapter(redis({ host: process.env.REDISTOGO_URL, port: 10281 }));

退房文档https://github.com/automattic/socket.io-redis#adapteropts

+0

嗨@galethil,我的REDISTOGO_URL就像redis:// redistogo:[email protected]:10281/.as在文档中提到,我可以在文档中指定一个url。一个例子也给出了var adapter = adapter ( '本地主机:6379');但试试看,如果你的解决方案的工作与否.Thnaks –

0

如果Redis的DB有一个密码,然后它是更好的Heroku的情况下进入主机选择

var redis = require('redis').createClient; 
    var adapter = require('socket.io-redis'); 
    var pub = redis(port, host, { auth_pass: "pwd" }); 
    var sub = redis(port, host, { detect_buffers: true, auth_pass: "pwd" 

}); 
    io.adapter(adapter({ pubClient: pub, subClient: sub })); 

redis://redistogo:[email protected] 
and port : provided in redistogo_url 

现在它工作得很好。

+0

hello @Ritesh Mehandiratta,不幸的是这种解决方案不适合我,我的代码不工作,也就是:var redis = require('redis')。createClient; var pub = redis(“10501”,“redis:// redistogo:****@tarpon.redistogo.com”,{auth_pass:“****”}); var sub = redis(“10501”,“redis:// redistogo:****@tarpon.redistogo.com”,{detect_buffers:true,auth_pass:“****”}); (redisSocket({host:process.env.REDISTOGO_URL,port:10501,pubClient:pub,subClient:sub})); –