我有一个应用程序,我想使用node.js和now.js在任意数量的客户端中共享nowjs“group”中对象的状态。
作为我正在尝试做的一个例子,让我们说在now.js附带的多房间聊天示例中,可以有任意数量的房间,用户选择ID。如果用户知道ID,他们可以输入(或者是第一个“创建”该房间)。每个房间一旦创建并且通信开始发生,就会有一个“历史”对象。历史对象包含一个或两个属性,以及一个注释对象数组,每个注释对象都具有用户属性,注释属性和日期时间属性。当新用户连接时,他们应该可以立即访问历史记录。
有没有办法在服务器上存储组范围的对象变量以与之同步?我是以错误的方式思考这个问题吗?我疯了还是有点慢?
答案 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...
唯一的缺点是,一旦房间空了,历史就会消失......我想。虽然我想你可以检查最后一次断开连接并在你想要的地方坚持下去。