私はMeteorにデータセンシティブなアプリケーションを作成しており、できるだけ多くの情報にクライアントアクセスを制限しようとしています。したがって、私は、ログインして匿名のユーザーの数を数える方法をサーバー側に実装したいと考えています。メテオでサーバー側の匿名ユーザー数を追跡する方法は?
私はさまざまな方法を試みました。私がやった、とコレクションを変更しようとしたときしかし、それはエラー「流星のコードは常に、ファイバ内で実行しなければならない」投げた
this.session.socket.on("close")
:最初はにフック示唆この質問Server cleanup after a client disconnects、に概説されているようでした。私はこの問題があると仮定します。ソケットが閉じられると、そのファイバーは強制終了され、データベースにアクセスすることは不可能になるからです。 OPはこの可能性のある解決策として"Meteor code must always run within a Fiber" when calling Collection.insert on serverを指摘しましたが、それが答えのコメントに基づいて最良の方法であるかどうかはわかりませんでした。
私は、変数に自動実行しようとした:
Meteor.default_server.stream_server.all_sockets().length
が、自動実行が呼び出されるように見えたことがないので、私は変数は反応性のコンテキストではないと仮定している、と私は確信してどのようにではなかったですそれを一つにする。
最後のアイデアはキープアライブスタイルのことでしたが、それは完全にメテオの哲学の穀物に逆らっているようです。私は絶対的な最後の手段としてのみ使うと思います。
this.session.socket
の機能のconsole.log
を実行しましたが、可能な他の機能は.on("data")
でしたが、ソケットが閉じているときは呼び出されません。
ここでは少し迷っていますので、どんな助けもあります。 ありがとうございました。
十分にありがとうございます:) – Pawan
これは非常にクールですが、ドキュメントでは特にanonユーザーを追跡しないので、元の質問には本当に答えません。 – cazgp
@cazgp私はこの記事を書いて以来、匿名ユーザーを追跡するためにパッケージを更新しました。当然、Meteor.usersで匿名ユーザーを追跡することはできませんが、その接続はすべて追跡されます。 –