0

我正在尝试在 heroku 上部署我的应用程序。我在我的应用程序中添加了 redistogo 插件。它基于 node.js 和 express。

我写了一个小代码

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

任何人都可以帮助我为什么遇到这个错误并摆脱这个错误。6379 是默认端口,但我的 redistogo url 没有 6379 端口号。它的端口号是 10281。

这是 socket.io-redis 模块中的错误还是我做错了什么?

4

2 回答 2

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

于 2015-06-22T08:48:51.633 回答
0

如果redis DB有密码那么最好选择

 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 }));

在 Heroku 的情况下,将主机输入为

redis://redistogo:XXXXXXXXX@beardfish.redistogo.com
and port : provided in redistogo_url

现在它工作得很好。

于 2015-06-22T10:54:38.017 回答