1

ユーザーがgrailsでオンラインかオフラインかを確認する機能を実現するにはどうすればよいですか? データベースでステータスフィールドを使用して、認証ごとにフィールドの値を更新できますか、それとも js のものを使用する必要がありますか? 多分あなたはそれについて何人かの家庭教師を知っていますか?

4

2 に答える 2

3

オンラインユーザーは、少なくとも10分前にアプリケーションを要求したユーザーであるとしましょう。したがって、次のようなユーザードメイン用の特別なフィールドを作成できます。

User {
  Date lastSeenAt

  static transients = ['online']

  boolean isOnline() {
     return lastSeenAt && lastSeenAt.after(new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10))
  } 
}

フィルタまたはコントローラ内で定期的に更新します。

User user = //...   
if (!user.lastSeenAt || user.lastSeenAt.before(new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5))
  user.lastSeenAt = new Date()
  user.save()
}

おそらく、すべてのリクエストで更新するべきではありません。最後の更新が少し前に行われた場合、この例では5分です。この値は低くすることができますが、どの精度が好きかによって異なります。

于 2012-07-08T11:08:57.957 に答える
0

これが多くの場所で行われる方法は、ユーザーからの最後のアクティビティをチェックすることです。現在と最後のアクティビティの間の時間が特定のポイントに達すると、ユーザーはオフラインとしてマークされます。

于 2012-07-08T09:55:08.730 に答える