使用Meteor框架记录实时连接数的最佳方法是什么?我有在线直播共享用户的要求,并且已经开始创建一个集合,只是替换每个用户的初始化记录,但是计数似乎重置了,我到目前为止已经重置了,感谢先进。
Counts = new Meteor.Collection "counts"
if Meteor.is_client
if Counts.findOne()
new_count = Counts.findOne().count + 1
Counts.remove {}
Counts.insert count: new_count
Template.visitors.count = ->
Counts.findOne().count
if Meteor.is_server
reset_data = ->
Counts.remove {}
Counts.insert count: 0
Meteor.startup ->
reset_data() if Counts.find().count() is 0
答案 0 :(得分:1)
当您信任“获取计数值,从集合中删除,在集合中插入新计数”时,您有竞争条件。客户可以在同一时间获得值X.这不是要走的路。
相反,尝试让每个客户端在集合中插入“本身”。添加一个唯一的ID和插入的“时间”。使用Meteor.Method实现心跳,刷新这个“时间”。 可以从集合中删除时间太长的客户端。使用服务器中的计时器删除空闲客户端。
你可以在这里查看一些内容: https://github.com/francisbyrne/hangwithme/blob/master/server/game.js