Piszę aplikację wrażliwą na dane w Meteor i próbuję ograniczyć dostęp klienta do jak największej ilości informacji. Dlatego chcę wdrożyć stronę serwerową w sposobie liczenia liczby zalogowanych i anonimowych użytkowników.Jak śledzić liczbę anonimowych użytkowników po stronie serwera w Meteorze?
Próbowałem różnych metod. Pierwszym był podanych w pytaniu Server cleanup after a client disconnects, co sugeruje, spinanie do:
this.session.socket.on("close")
Jednak kiedy ja, i próbował zmienić kolekcję, to wyrzucił „kod Meteor musi zawsze działać w Fibre” błąd. Zakładam, że ten problem polega na tym, że po zamknięciu gniazda, że Fibre jest zabity, a więc uzyskanie dostępu do bazy danych jest niemożliwe. OP wskazał na to "Meteor code must always run within a Fiber" when calling Collection.insert on server jako możliwe rozwiązanie, ale nie byłem pewien, czy jest to najlepsza metoda, oparta na komentarzach do odpowiedzi.
Potem próbował autorun na zmienną:
Meteor.default_server.stream_server.all_sockets().length
autorun ale nigdy nie wydawało się nazywać, więc jestem przy założeniu, że zmienna nie jest reaktywny kontekst, i nie byłem pewien, jak uczyń to jednym.
Ostatnim pomysłem było wykonanie stylu utrzymaniowego, ale wydaje się, że jest to całkowicie sprzeczne z filozofią Meteorytów i myślę, że użyję go jako absolutnej ostateczności.
Zrobiłem funkcji na this.session.socket
, a jedyną inną możliwą funkcją było .on("data")
, ale nie jest to wywoływane, gdy gniazdo jest zamknięte.
Jestem tu trochę przegrany, więc każda pomoc będzie świetna, Dzięki.
Nie mogę ci wystarczająco podziękować za to :) – Pawan
Podczas gdy jest to bardzo fajne, doktorzy wyraźnie mówią, że nie śledzi użytkowników anon, więc nie odpowiada na oryginalne pytanie. – cazgp
@ cazgp Odkąd napisałem ten post, zaktualizowałem pakiet, aby śledzić anonimowych użytkowników. Oczywiście nie możemy śledzić anonimowych użytkowników w 'Meteor.users', ale ich połączenia są śledzone. –