Node,Socket.io和Redis-多个实例

奥迪耶

我对在Heroku上运行具有多个dyno的节点以及如何使socket.io/redis跨实例可访问感到困惑。我正在使用socket.io 0.9.16。

(1)首先,当我dynos在Heroku中缩放到两个时,这仅意味着两个节点实例?

(2)其次,当我创建如下所示的实例时io

var io = require('socket.io').listen(server); 

然后,当node创建第二个io实例时,再用它创建第二个实例-是正确的吗?

(3)使用的原因redis是创建一个所有实例都可以访问的单一商店-正确吗?

但是,当我像这样创建一个新redisstore的时io

var ioRedisStore = require('socket.io/lib/stores/redis');
io.set('store', new ioRedisStore({
  redisPub    : redis.createClient(),
  redisSub    : redis.createClient(),
  redisClient : redis.createClient()
}));

(4)现在不是redis由每个节点实例创建实例,然后将其设置为每个io实例的存储吗?如何跨实例?

迈克·S

(1)首先,当我在Heroku中扩展到两个dyno时,这仅意味着两个节点实例?

您可以这样想,是的。

(2)其次,当我像这样创建io的实例时:...

对,那是正确的。

(3)使用redis的原因是创建一个可以供所有实例访问的单一存储-正确吗?

是。

(4)现在不是每个节点实例都创建了这个redis实例,然后将其设置为每个io实例的存储吗?如何跨实例?

Redis是一个键值服务器。调用redis.createClient()只会创建与Redis服务器的连接,实际上并不会在任何地方创建Redis服务器的实例。您将需要在某个地方运行redis实例(Heroku有一些选择)。然后,您将需要通过将端口和主机传递给redis.createClientdocs来设置代码以显式连接到该实例

因此,如果您有一个Redis实例在端口6379(默认)上运行于10.0.1.100(随机选择),则可以执行以下操作:

var ioRedisStore = require('socket.io/lib/stores/redis');
io.set('store', new ioRedisStore({
  redisPub    : redis.createClient(6379, '10.0.1.100'),
  redisSub    : redis.createClient(6379, '10.0.1.100'),
  redisClient : redis.createClient(6379, '10.0.1.100')
}));

这样,您的所有节点实例都共享同一个Redis实例,并且它们可以通过它进行协调。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node,Socket.io和Redis-多个实例

来自分类Dev

在一个node.js实例中运行多个socket.io-clients

来自分类Dev

在一个node.js实例中运行多个socket.io-clients

来自分类Dev

Node Socket.IO socket.on() 跨多个文件

来自分类Dev

在具有多个导出功能的另一个文件中引用socket.io实例(node.js)

来自分类Dev

芹菜多个实例和Redis

来自分类Dev

node 和 socket.io 多个 API 调用在一段时间后挂起

来自分类Dev

Socket.io从Node中的多个套接字接收数据

来自分类Dev

Socket.io和Redis发布/订阅

来自分类Dev

使用 socket.io 在多个应用程序实例上确保唯一的 socket.id

来自分类Dev

Redis,Node.js和Socket.io:跨服务器身份验证和对node.js的了解

来自分类Dev

关闭和多个实例

来自分类Dev

CDI和多个实例

来自分类Dev

socket.io 路由器,分配给多个实例之一

来自分类Dev

Node.js和Socket.io-动态socket.on()

来自分类Dev

Node.js:在快速路由文件中访问socket.io实例

来自分类Dev

找不到模块'socket.io/node_modules/redis'

来自分类Dev

Socket.io和Redis Pub / Sub无法正常工作

来自分类Dev

当作为适配器添加到Socket.io实例时,Socket.io-redis提供错误

来自分类Dev

Node.js - Socket.IO Emit 上的多个回调

来自分类Dev

启动多个实例和表演

来自分类Dev

Socket.IO和AngularJS创建多个连接,如何停止?

来自分类Dev

Node.js,socket.io和mongojs-使用socket.io登录表单

来自分类Dev

Node.js和Socket.io创建空间

来自分类Dev

在Socket IO和Node JS中轮询MySQL DB

来自分类Dev

使用node.js和socket.io的私人聊天

来自分类Dev

在Centos上运行Redis的多个实例

来自分类Dev

使用ServiceStack连接到多个Redis实例

来自分类Dev

在多个节点实例中共享IO对象

Related 相关文章

热门标签

归档