【问题标题】:How to store user's session info in node js chat application?如何在节点 js 聊天应用程序中存储用户的会话信息?
【发布时间】:2015-02-19 00:23:50
【问题描述】:

我已经使用 node js 和 socket io 构建了一个基本的聊天模块。我知道 javascript,但在节点和套接字领域相当新。现在我将把这个聊天模块集成到我们的一个应用程序中,不同组织的员工将能够相互交流。现在,我面临的问题是 - 无法知道在哪里存储连接用户的会话信息。

我想要做的是,假设有 2 个组织 A 和 B。当组织“A”的任何员工将与节点套接字服务器连接时,我将为组织 A 和创建一个会话变量(可能是一个数组)将该员工存储在该数组中。组织 B 也一样。通过这种方式,我想为每个组织创建一种存储桶结构,并且相应的员工将在这些存储桶中。

因此,当组织的任何新员工与套接字服务器连接时,我将检查该员工所属的组织并仅通知该组织的员工。我在这里面临的问题是 - 在哪里存储所有这些连接用户的信息。 Node Socket serve 是存储这些数据的正确位置,还是我应该使用其他一些机制,如 REDIS(http://redis.io/)?

任何想法!!!,处理这种情况的标准方法是什么?

【问题讨论】:

    标签: node.js redis socket.io chat


    【解决方案1】:

    我猜他们需要某种凭据。使用文档http://socket.io/docs/ 作为参考,您可以执行以下操作:

    io.on('connection', function (socket) {
      //some code to filter your users between organization A or B 
    }
    

    然后您可以通过

    向特定用户发送信息
    // iterate through each user in organizationA:
    socket.emit('orgnizationA', someData);
    

    【讨论】:

    • 我明白你的意思。但是,我的问题是如何在 Socket 服务器端存储每个组织和各自的员工信息?它是存储在 Socket 服务器中的正确位置,还是如我所述,REDIS 将是正确的?
    【解决方案2】:

    是的,最好将它们存储在 Redis 中。

    如果您想要扩展(例如,增加 Heroku dyno 的数量),将数据保存在内存中是一种反模式(阅读:会阻止您扩展)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2015-12-15
      相关资源
      最近更新 更多