流星连接数

时间:2012-07-31 05:45:32

标签: node.js meteor

使用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

1 个答案:

答案 0 :(得分:1)

当您信任“获取计数值,从集合中删除,在集合中插入新计数”时,您有竞争条件。客户可以在同一时间获得值X.这不是要走的路。

相反,尝试让每个客户端在集合中插入“本身”。添加一个唯一的ID和插入的“时间”。使用Meteor.Method实现心跳,刷新这个“时间”。 可以从集合中删除时间太长的客户端。使用服务器中的计时器删除空闲客户端。

你可以在这里查看一些内容: https://github.com/francisbyrne/hangwithme/blob/master/server/game.js