私は流星で簡単なチャットルームを作っています。現在アクティブなユーザーのリストを取得するにはどうすればよいですか?現在の接続/クライアントのリストを実際に取得する方法はありますか?
2 に答える
私は昨日流星の情報源を閲覧して、そのようなものがすでにあるかどうかを確認しました。接続されたフラグなどが見つかりませんでした...
2つの選択肢があると思います。
接続されているすべてのユーザーのクライアントとサーバーにハートビートを実装します。個人的には、このアイデアはあまり好きではありません。サーバー上で無数の間隔が実行される可能性があるためです。
sockjsサーバーを使用して、開いているソケットを取得します。
Meteor.default_server.stream_server.all_sockets()
開いているすべてのソケットを持つ配列を返します。その変更を1つの間隔で探して(または、sockjsサーバー自体の変更をリッスンする方がよい場合は、register
便利な方法があります)、開いているソケットをユーザーにマップし、コレクションを使用してプッシュすることができます。あなたのクライアントにそれ。各クライアントは自分のソケットIDを知っているので、マッピングは難しいものであってはなりません。
私はまだそれを実装していなかったので、これらはどこから始めればよいかという考えにすぎません。
現在アクティブなユーザーの数を公開するために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}