Tôi đang viết một ứng dụng nhạy cảm với dữ liệu trong Meteor và đang cố giới hạn quyền truy cập của khách hàng vào càng nhiều thông tin càng tốt. Do đó, tôi muốn triển khai phía máy chủ một cách để đếm số lượng người dùng đã đăng nhập và ẩn danh.Cách theo dõi số lượng người dùng ẩn danh phía máy chủ trong Meteor?
Tôi đã thử nhiều phương pháp khác nhau. Việc đầu tiên là như được nêu trong câu hỏi này Server cleanup after a client disconnects, mà đề nghị hooking vào:
this.session.socket.on("close")
Tuy nhiên khi tôi đã làm, và đã cố gắng để thay đổi một bộ sưu tập, nó đã ném một "mã Meteor phải luôn luôn chạy trong một sợi" lỗi. Tôi cho rằng vấn đề này là bởi vì một khi socket bị đóng, Fiber bị giết, và việc truy cập cơ sở dữ liệu là không thể. OP đã chỉ ra giải pháp này có thể là "Meteor code must always run within a Fiber" when calling Collection.insert on server nhưng tôi không chắc đó có phải là phương pháp tốt nhất hay không, dựa trên các nhận xét cho câu trả lời.
sau đó tôi đã cố gắng để tự động chạy trên các biến:
Meteor.default_server.stream_server.all_sockets().length
nhưng autorun không bao giờ dường như được gọi, vì vậy tôi giả sử biến đó không phải là một bối cảnh phản ứng, và tôi đã không chắc chắn làm thế nào để làm cho nó một.
Ý tưởng cuối cùng là làm một điều phong cách, nhưng điều đó dường như hoàn toàn trái ngược với triết lý Meteor, và tôi nghĩ rằng tôi sẽ chỉ sử dụng như một phương sách cuối cùng tuyệt đối.
Tôi đã thực hiện console.log
các chức năng trên this.session.socket
và chỉ một chức năng khác có thể là .on("data")
, nhưng điều này không được gọi khi đóng socket.
Tôi đang ở đây một chút mất mát ở đây, vì vậy mọi trợ giúp sẽ tuyệt vời, Cảm ơn bạn.
Không thể cảm ơn bạn đủ cho điều này :) – Pawan
Trong khi điều này là rất mát mẻ, các tài liệu đặc biệt nói nó không theo dõi người dùng anon vì vậy nó không thực sự trả lời câu hỏi ban đầu. – cazgp
@cazgp Vì tôi đã viết bài đăng này, tôi đã cập nhật gói để theo dõi người dùng ẩn danh. Rõ ràng là chúng ta không thể theo dõi những người dùng nặc danh trong 'Meteor.users', nhưng tất cả các kết nối của họ đều được theo dõi. –