gpt4 book ai didi

node.js - 将 Socket.io 对象存储在持久化数据库或 redis 中

转载 作者:IT王子 更新时间:2023-10-29 06:10:59 28 4
gpt4 key购买 nike

构建客户服务聊天应用程序。因此需要跟踪登录套接字的客户并将他们附加到管理/代理室。

到目前为止,我已经通过使用简单的 JSON 对象实现了这一点。但是为了扩展应用程序,我需要找到一个可以存储它们的地方。由于 Socket 对象是 Circular JSON 的形式,我无法将它存储在 Redis 中。我尝试使用“Douglas Crockford 的 Cycle.js”,但看起来它正在改变 decycle/retrocycle 中对象的性质。

请帮我找到一个解决方案来跟踪客户和代理套接字,并在代理前端收到请求时连接它们。

当前解决方案:

// Admin Socket -

admins[socket.username] = socket;

// Customer socket

users[socket.roomID] = socket;

需要在多核 Linux 机器上运行此解决方案,该机器使用 16 个内核用于由 Nginx 代理的 16 个套接字服务器/node.js 集群。因此需要快速找到健壮架构的解决方案。

更多信息:

  1. 我正在使用 Redis for Sub/pub 进行横向扩展。
  2. 并使用 Redis 存储短历史消息。

附言(我的组织不再允许 MongoDB。基于 Mongo 的解决方案对我不起作用。)

最佳答案

为了使用 Redis 扩展到多个 Node ,请查看 socket.io-redis

通过使用 socket.io-redis 适配器运行 socket.io,您可以在不同的进程或服务器中运行多个 socket.io 实例,这些实例可以相互广播和发出事件。

同时查看 GitHub 上的原始线程:How can i store Socket object in Database

关于node.js - 将 Socket.io 对象存储在持久化数据库或 redis 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com