需要在group.js对象共享模式的建议

时间:2012-01-02 21:54:20

标签: node.js nowjs-sockets

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

作为我正在尝试做的一个例子,让我们说在now.js附带的多房间聊天示例中,可以有任意数量的房间,用户选择ID。如果用户知道ID,他们可以输入(或者是第一个“创建”该房间)。每个房间一旦创建并且通信开始发生,就会有一个“历史”对象。历史对象包含一个或两个属性,以及一个注释对象数组,每个注释对象都具有用户属性,注释属性和日期时间属性。当新用户连接时,他们应该可以立即访问历史记录。

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

1 个答案:

答案 0 :(得分:0)

好的......我明白了。

我在服务器端有一个新函数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...

唯一的缺点是,一旦房间空了,历史就会消失......我想。虽然我想你可以检查最后一次断开连接并在你想要的地方坚持下去。