- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 socket.io-redis 将我在 Heroku 上的应用程序扩展到 2 个测功机(或更多)。这是我的代码(其中 config.redis 只是一个包含 RedisToGo 端口、主机和传递值的对象):
var redisApp = require('redis');
var redis = require('socket.io-redis');
if(process.env.NODE_ENV === 'production') {
var socketpub = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, return_buffers: true});
var socketsub = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, detect_buffers: true});
var client = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, return_buffers: true});
socketio.adapter(redis({
pubClient: socketpub,
subClient: socketsub,
redisClient: client
}));
}
在客户端我有:
var ioSocket = io('', {
path: '/socket.io-client',
'force new connection': true,
transports: ['websocket']
});
..所以 socket.io 不会尝试使用轮询。
我还为 RedisToGo 配置了正确的 Heroku 环境变量(REDISTOGO_HOST,REDISTOGO_PASS,REDISTOGO_PORT)。
当我们缩放到 1 dyno 时,套接字行为是完美的。在 2 dynos 时,行为偏离了 - 请求被随机地发送到 1 dyno 或另一个,并且发出的套接字事件仅发送到运行在发出请求的 dyno 上的客户端,而不是所有(哪个套接字.io-redis 和 RedisToGo 应该负责)。
如有任何想法,我们将不胜感激!
最佳答案
不确定这是否对您有帮助,但我正在以这种方式使用 redis 和 socketio,并且运行良好。
var redis = require('redis').createClient;
var adapter = require('socket.io-redis');
var port = config.redistogo.port;
var host = config.redistogo.host;
var pub = redis(port, host, {
auth_pass: auth_pass
});
var sub = redis(port, host, {
detect_buffers: true,
auth_pass: auth_pass
});
io.adapter(adapter({
pubClient: pub,
subClient: sub
}));
关于node.js - 使用 socket.io-redis 和 RedisToGo 在 Heroku 上扩展到 2+ dynos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842266/
尝试通过以下 redistogo 凭据连接到 redis 会出错。 var redisClient = require('redis').createClient({ host: 'birde
通读https://redistogo.com/documentation/introduction_to_redis?language=en但无法让它工作。 redis-cli -h my-host
我们使用 redis 来存储我们需要快速调用的“事件”信息。使用像 redis 这样的东西,你会失去 redis 速度的优势吗? 这样的服务有什么优缺点? 谢谢! 最佳答案 您的数据包从应用程序到数据
同一个 heroku 帐户上的两个应用程序是否可以访问同一个 RedisToGo 服务器?我们有两个应用程序,它们都需要网络访问,但结构却截然不同。所以它们不能是同一个应用程序中的 dyno 类型 -
我在 Heroku 上有一个 Rails 应用程序,使用 RedisToGo 和 gem redis。我该怎么做类似于: $ redis-cli monitor 但是在 RedisToGo 上呢? 最
我在 Heroku 上使用 celerybeat 和 RedisToGo Nano 插件 有一个 web dyno 和一个 worker dyno celerybeat worker 设置为每分钟执行
我的 clojure noir 应用程序在本地 100% 正常运行,并且连接到 RedisToGo 没问题。 问题是当我部署到 Heroku (git push heroku master) 时,出现
我们可以在不使用 RedisToGo 附加组件的情况下使用 heroku 上的 redis 通过 python 进行后台作业吗?请任何指针。 我在关注这个 https://devcenter.hero
我有/config/initializers/redis.rb: if Rails.env == "development" $redis = Redis.new(:host => 'localh
我打算使用 Redis 进行 session 存储。 根据这个问题:What is a good session store for a single-host Node.js production
我已经在 Heroku 上添加了 Redistogo 附加组件,但我无法在控制台模式下对其进行测试。我已经按照 documentation 做了这件事. $ heroku run python --a
我有一个 node.js 应用程序,使用 RedisToGo 并在 Heroku 中运行。我想将 Redis To Go 数据库复制到本地进行测试。 在开发 Ruby on Rails 应用程序时,我
在更新我的 gem 并将所有内容投入生产后,我在 Heroku 上启动 sidekiq 时遇到了很大的问题。问题是 Sidekiq 试图通过本地连接和端口连接到 Redis,而不是使用 REDISTO
我将 Redis To Go 与 https://github.com/mranney/node_redis 结合使用图书馆。 Redis 给了我一个看起来像 redis://me:978287c0b
我有一个 Rails 实例和另一个 Node.js 实例。计划是使用 Redis 的 pubsub 从 Rails 项目发布信息,并通过 Node.js 程序订阅。 node.js 程序会通过网络套接
我在 Heroku 上创建了一个 Redis To Go Nano 计划,我在不同的环境中使用连接 URLHeroku 应用程序共享一个速率限制计数器。按照所有常规步骤,这就是我所做的。 我已经添加了
我一直试图让 Resque(使用 Resque 服务器)和 RedisToGo 在 heroku(cedar)上工作一段时间,但我一直遇到这个错误: Redis::CannotConnectError
我从 Heroku 上的 Redis 收到错误“ERR max number of clients reached”,我不确定这是为什么。我正在为后台工作人员使用 Sidekiq,并将其并发设置为 5
我正在编写一个应用程序,它需要发送许多电子邮件并因为这些电子邮件而创建许多用户通知。此任务在 Heroku 中产生超时。为了解决这个问题,我决定使用 Resque 和 RedistToGo。 我所做的
我正在尝试使用 socket.io-redis 将我在 Heroku 上的应用程序扩展到 2 个测功机(或更多)。这是我的代码(其中 config.redis 只是一个包含 RedisToGo 端口、
我是一名优秀的程序员,十分优秀!