【问题标题】:Storing circular objects in MongoDB在 MongoDB 中存储圆形对象
【发布时间】:2017-08-26 15:41:49
【问题描述】:

我正在使用用于 Node.js 的 socket.io 模块进行用户之间的通信。我想要的是:一旦特定用户建立连接,我需要将他/她的套接字存储在数据库中,以便在需要时可以在任意时间向他/她发送消息。因此,由于我可以拥有数百个用户,我想将他们的套接字对象存储在数据库中。 为此,我使用了混合模式类型,因为套接字是对象。但是,套接字是 循环 对象,因此在尝试将套接字存储在数据库中时,我的堆栈会溢出。我对此感兴趣:是否可以在 MongoDB 中存储此类循环对象?我设法将套接字存储在变量中并稍后重用它们以使用它们发送消息,所以如果我将这些套接字存储在某些数据结构中,这是可能的,但我对它们是否可以存储在数据库中感兴趣?谢谢

【问题讨论】:

    标签: node.js mongodb sockets mongoose socket.io


    【解决方案1】:

    可能无法存储循环对象,将socket id存储在数据库中也是完全错误的,因为它会随着时间的推移而变化并且没有用。

    你能做和(你应该做的)是为用户创造空间:

    io.on('connection', function(socket){
    
        // you are emitting this event from client with your choose of identifier
        socket.on('auth', function(userId) {       
            socket.join('room:' + userId)   
        })
    
    })
    

    然后您可以向特定用户发出事件,因为您正在为该用户创建私人房间,userId 等:

    var userId = 1234
    io.in('room:' + userId).emit('hello', { 'asd': 'xxx' });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 2018-06-28
      • 1970-01-01
      • 2013-07-13
      • 2011-08-12
      • 2022-12-20
      • 2012-06-23
      • 1970-01-01
      相关资源
      最近更新 更多