【问题标题】:using socket io on multi server在多服务器上使用套接字 io
【发布时间】:2013-08-15 04:04:01
【问题描述】:

正如socket.io解释的那样,我们可以在多服务器上使用socket io,请先看代码:

var RedisStore = require('socket.io/lib/stores/redis')
  , redis  = require('socket.io/node_modules/redis')
  , pub    = redis.createClient()
  , sub    = redis.createClient()
  , client = redis.createClient();

io.set('store', new RedisStore({
  redisPub : pub
, redisSub : sub
, redisClient : client
}));

现在我有一个问题:

1:如果我想在 3 个服务器上运行 socket.io 并在每个服务器上运行 2 个实例,我该如何实现?

2:认为用户连接到服务器 1(来自 3 台服务器),socket.io 可以处理三个服务器上的空间,因此来自服务器 2 和 3 的用户可以收到消息?

3:我需要node cluster在三台服务器上运行socket io吗?

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    只要每个实例都指向同一个 Redis 存储,您的所有房间都将可用。如果您想在单个服务器上运行节点应用程序的多个实例,您可以使用节点集群。

    【讨论】:

    • 如何在多服务器上运行(我的意思是多节点)
    • 如何在多台服务器上运行节点?您需要确保所有有状态的数据都位于所有服务器都可以访问的位置。因此,如果您使用的是快速会话,那么这些会话也应该由 redis 存储支持。这也包括用户生成的内容。如果用户上传的图片将显示在他们的个人资料中,您不能只将其保存到硬盘上并期望一切顺利。
    • 所以只要他们指向一个redis服务器就没有问题,再有可能有问题,如果redis服务器宕机,所有节点服务器停止工作,socket也是如此。 io 与 redis 商店对此类问题有任何想法吗?我可以在多台服务器上复制 redis 存储,所以如果其中一个出现故障,另一个保留,我可以使用当前的套接字 redis 存储来实现吗?谢谢
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多