5

私は流星で簡単なチャットルームを作っています。現在アクティブなユーザーのリストを取得するにはどうすればよいですか?現在の接続/クライアントのリストを実際に取得する方法はありますか?

4

2 に答える 2

8

私は昨日流星の情報源を閲覧して、そのようなものがすでにあるかどうかを確認しました。接続されたフラグなどが見つかりませんでした...

2つの選択肢があると思います。

  • 接続されているすべてのユーザーのクライアントとサーバーにハートビートを実装します。個人的には、このアイデアはあまり好きではありません。サーバー上で無数の間隔が実行される可能性があるためです。

  • sockjsサーバーを使用して、開いているソケットを取得しますMeteor.default_server.stream_server.all_sockets()開いているすべてのソケットを持つ配列を返します。その変更を1つの間隔で探して(または、sockjsサーバー自体の変更をリッスンする方がよい場合は、register便利な方法があります)、開いているソケットをユーザーにマップし、コレクションを使用してプッシュすることができます。あなたのクライアントにそれ。各クライアントは自分のソケットIDを知っているので、マッピングは難しいものであってはなりません。

私はまだそれを実装していなかったので、これらはどこから始めればよいかという考えにすぎません。

于 2012-10-25T08:48:29.800 に答える
1

現在アクティブなユーザーの数を公開するためにRESTエンドポイントを作成しました...

/server/main.js

import bodyParser from 'body-parser'
import { Picker } from 'meteor/meteorhacks:picker'

Picker.middleware(bodyParser.json())

Picker.route('/api/status', ({ provider }, request, response) => {
  response.statusCode = 200
  response.end(JSON.stringify({
    active_users: Meteor.default_server.stream_server.all_sockets().length
  }))
})

出力

{"active_users":1}

于 2019-11-12T23:48:05.460 に答える