如何在Meteor中使用客户端重新连接事件。
在客户端,Meteor.apply采用新的等待选项,确保 在此方法之前,不会向服务器发送进一步的方法调用 完了;它用于登录和注销方法以保持 用户ID定义明确。您还可以指定onReconnect处理程序 在重新建立连接时运行;流星帐户使用 这将重新连接重新登录。
有人可以提供一个例子。
以下是帐户包中的示例。
Accounts._makeClientLoggedIn = function(userId, token) {
Accounts._storeLoginToken(userId, token);
Meteor.default_connection.setUserId(userId);
Meteor.default_connection.onReconnect = function() {
Meteor.apply('login', [{resume: token}], {wait: true}, function(error, result) {
if (error) {
Accounts._makeClientLoggedOut();
throw error;
} else {
// nothing to do
}
});
};
userLoadedListeners.invalidateAll();
if (currentUserSubscriptionData) {
currentUserSubscriptionData.handle.stop();
}
var data = currentUserSubscriptionData = {loaded: false};
data.handle = Meteor.subscribe(
"meteor.currentUser", function () {
// Important! We use "data" here, not "currentUserSubscriptionData", so
// that if we log out and in again before this subscription is ready, we
// don't make currentUserSubscriptionData look ready just because this
// older iteration of subscribing is ready.
data.loaded = true;
userLoadedListeners.invalidateAll();
});
};
我假设您不能只定义另一个default_connection.onReconnect,如果您希望帐户仍然有效吗?
感谢。
修改:
考虑一下,而不是使用onReconnect你可能应该使用Meteor.status()
代替吗?
答案 0 :(得分:7)
Meteor.status
是一个反应变量,因此只要连接状态发生变化,它就会重新运行。
if (Meteor.isClient) {
Tracker.autorun(function () {
if (Meteor.status().connected) {
console.log("connected");
} else {
console.log("disconnected");
}
});
}