【发布时间】:2014-04-12 17:34:24
【问题描述】:
我看到发布时,collection._connection.publish_handlers 已填充,collection._connection.method_handlers 也已填充,可能还有其他区域。
我想基本上通过删除对该集合的引用来清理内存,并且它是完全发布的。
基本上,应用程序的每个用户都有一个该用户的集合列表。有一个如下所示的发布功能,供用户获取他们的收藏列表:
Meteor.publish('users_collections', function() {
var self = this;
var handle = UsersCollections.find({ownerId: self.userId}).observeChanges({
added: function(id, collectionInfo) {
UsersCollectionManager.addUsersCollection(self.userId, collectionInfo.name);
}
});
});
这会发布该用户的集合列表(任何连接的用户都会获得他们的列表)。
一旦用户获得他们的列表,这些集合中的每一个都会与新的 Meteor.Collection 发生反应,然后发布。
UsersCollectionManager.addUsersCollection = function(userId, collectionName) {
if (self.collections[userId].collections[collectionName] === undefined) {
self.collections[userId].collections[collectionName] = new Meteor.Collection(collectionName);
Meteor.publish(collectionName, function() {
return self.collections[userId].collections[collectionName].find();
});
}
};
一旦用户断开连接,我就会运行一个函数。
如果该用户没有打开任何连接(例如:如果他们打开了多个窗口并且所有连接都关闭了“所有窗口都关闭”),那么它会开始 30 秒的超时:
- 清理所有这些发布调用和新的 Meteor.Collection 调用”以节省内存
因为该应用的其他用户不需要该用户的收藏。
我不确定如何真正从内存中清除这些内容。
我在 Meteor API 中没有看到“取消发布”或“Collection.stop”类型的方法。
我将如何进行清理?
【问题讨论】:
标签: javascript meteor