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 に答える