Я пишу чувствительное к данным приложение в Meteor и пытаюсь ограничить доступ клиента к максимально возможной информации. Поэтому я хочу реализовать серверную сторону для подсчета количества зарегистрированных и анонимных пользователей.
Я пробовал различные методы. Первый из них был описан в этом вопросе Очистка сервера после отсоединения клиента, что предполагает подключение к нему:
this.session.socket.on("close")
Однако когда я это сделал и попытался сменить коллекцию, он выбросил код "Метеор", который должен всегда выполняться внутри Fiber. Я предполагаю, что эта проблема связана с тем, что после того, как сокет закрыт, этот Fiber убит, поэтому доступ к базе данных невозможен. OP указал на этот код Meteor всегда должен работать в пределах Fiber " при вызове Collection.insert на сервере в качестве возможного решения, но я не был уверен, что это лучший метод, основанный на комментариях к ответу.
Затем я попытался автозапускать переменную:
Meteor.default_server.stream_server.all_sockets().length
но автозапуск никогда не вызывался, поэтому я предполагаю, что переменная не является реактивным контекстом, и я не был уверен, как сделать ее одной.
Последняя идея состояла в том, чтобы сделать стиль keepalive style, но это, похоже, полностью противоречит текстуре "Метеор", и я думаю, что буду использовать только в качестве крайней последней меры.
Я выполнил console.log
функций на this.session.socket
, и единственной возможной функцией была .on("data")
, но это не вызывается, когда сокет закрыт.
Я немного потерял здесь, поэтому любая помощь будет отличной, Спасибо.