1

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

1 回答 1

1

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

相反,尝试让每个客户端在集合中插入“自身”。放置一个唯一的 id 和它被插入的“时间”。使用 Meteor.Method 实现一个心跳,刷新这个“时间”。可以从集合中删除时间太旧的客户端。在服务器中使用计时器来删除空闲客户端。

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

于 2012-11-07T02:50:29.267 回答