2015-06-22 91 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})); –