node.js - 扩展 NodeJS 聊天室 - 在 Redis 中存储连接状态

标签 node.js redis socket.io

聊天室应用程序在多个服务器上运行,包含两个服务:
1.连接管理器
在加入聊天室之前,客户端首先向连接管理器请求聊天服务 url
2.聊天服务
一个典型的基于 socket.io 的聊天实现。

我需要在 Redis 中存储每个客户端的连接状态,例如用户连接到哪个房间,一个房间中有多少用户等。因此连接管理器可以使用这些数据进行负载平衡。

我可以使用socket connection/disconnect事件来维护Redis当前的连接状态,但是如果NodeJS服务器出现故障,如何保证Node和Redis数据同步呢?执行此操作的最佳方法是什么?

最佳答案

I can use socket connection/disconnect event to maintain the current connection status in Redis, but in case of NodeJS server failure, how to make sure Node and Redis data are synchronized?

例如,您可以在 Redis 中创建一个集合,其中包含对由特定服务器 Node 管理的键的引用。如果 Node 出现故障或重新启动,您可以使这些 key 失效。

关于node.js - 扩展 NodeJS 聊天室 - 在 Redis 中存储连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263246/

相关文章:

javascript - 范围错误 : Maximum call stack size exceeded for Node. js

node.js - node-sass 总是找不到命令!我尝试一切

java - 我怎样才能一次从具有不同 key 的redis数据库中获取100条记录?

replication - 可扩展性设计问题 - 主/从数据库

python - 在 redis 和 python 上使用表达式查询键

node.js - 在nodeJS中获取SESSIONID

node.js - Express 和 socket.io : pass var io to router

javascript - Node JS - 通过引用其他文件传递 Javascript 对象

node.js - 在没有处理程序的情况下创建服务器时找不到客户端的 socket.io

node.js - Nodejs Sequelize sqlite3 没有这样的表