1

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

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

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

4

1 回答 1

0

好,我知道了。

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

这个历史对象使用了 add、remove 和 list 方法。由于我需要从客户端获取列表,因此使用如下回调很重要:

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...

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

于 2012-01-03T22:25:54.530 回答