【问题标题】:Need recommendations for pattern for now.js object sharing in group需要对 now.js 群组对象共享模式的建议
【发布时间】:2012-02-01 02:33:00
【问题描述】:

我有一个应用程序,我想使用 node.js 和 now.js 在任意数量的客户端之间共享 nowjs“组”中对象的状态。

作为我正在尝试做的一个示例,假设在 now.js 附带的多房间聊天示例中,可以有任意数量的房间,其 ID 由用户选择。如果用户知道 ID,他们可以进入(或成为第一个“创建”)该房间。一旦创建并开始进行通信,就会为每个房间维护一个“历史”对象。历史对象包含一个或两个属性和一组评论对象,每个对象都有一个用户属性、一个评论属性和一个日期时间属性。当新用户连接时,他们应该可以立即访问历史记录。

有没有办法在服务器上存储组范围的对象变量以与之同步?我是否以错误的方式思考这个问题?我是疯了还是有点慢?

【问题讨论】:

    标签: node.js nowjs-sockets


    【解决方案1】:

    好的...我明白了。

    我在服务器端有一个新函数 createHistory(groupid),如果用户进入房间(组)时它不存在,它会返回一个新的历史对象。如果该用户刚刚创建了房间,就会发生这种情况。

    此历史记录对象采用添加、删除和列出方法。由于我需要从客户端获取列表,因此使用如下回调很重要:

    api.get = (callback) ->
      callback(_history)
    

    我分配结果:

    everyone.getGroup(this.now.groupid).now.history = createHistory(this.now.groupid)
    

    现在我可以在服务器上添加历史记录了:

    api.add = (time,user,text) ->
      _history.items.push {time:time, user:user,text:text}
    

    从我的客户那里得到它:

    now.history.get (history) ->
      for item in history
        #do something...
    

    唯一的缺点是一旦房间空了,历史就会消失……我想。虽然我想您可以检查最后一次断开连接并在需要时将其保留在某个地方。

    【讨论】:

    • 正在做一些非常相似的事情,从我与小组的合作来看,即使是空的,它仍然存在,所以理论上我认为即使每个人都断开连接,历史也会持续存在,当然服务器重启会如果它没有以某种方式保存到磁盘,则擦除历史记录。
    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多