gpt4 book ai didi

javascript - meteor onConnection 客户端 Hook ?

转载 作者:行者123 更新时间:2023-11-30 15:24:57 26 4
gpt4 key购买 nike

Meteor 客户端有 onConnection 钩子(Hook)吗?这是我的问题:我正在尝试检测 Meteor 何时重新连接到服务器以基于参数以编程方式重新订阅某些数据。

Meteor其实是自动重新订阅了我的默认订阅,但是我也有一个基于参数的全局订阅,重连后并没有重新加载:

Meteor.subscribe('Members', fnGetLastEvent());

我正在尝试将它重新加载到 Meteor 重新连接 Hook 上,如果它存在的话。提前致谢。

最佳答案

我没有直接的答案给您,但您可以尝试以下几点,看看它们是否适合您的特定用例。

1) 在客户端设置自己的onReconnect回调函数。

Meteor.onReconnect = function() {
console.log("meteor has reconnected);
// do stuff
};

我在我拥有的 Meteor 应用程序的控制台中通过 Chrome 开发人员工具对此进行了测试。我设置了 onReconnect 回调,运行了 Meteor.disconnect(),然后运行了 Meteor.reconnect() 并触发了我的回调。唯一需要注意的是,我不确定此回调是在建立连接之后还是之前运行。

2) 将您的subscribe 调用放入使用Meteor.status() 作为响应数据源的autorun 中。我在我的一个应用程序中进行了类似的检查,以检查 Meteor 是否未连接,然后显示一个模式通知用户他们的数据不再是实时的。这是我用来检测 Meteor 何时断开连接与重新连接的主要逻辑。

var updateCountdownTimeout;
var nextRetry = new ReactiveVar(0);

Tracker.autorun(() => {
if (Meteor.status().status === 'waiting') {
updateCountdownTimeout = Meteor.setInterval(() => {
nextRetry.set(Math.round((Meteor.status().retryTime - (new Date()).getTime()) / 1000));
}, 1000);
} else {
nextRetry.set(0);
Meteor.clearInterval(updateCountdownTimeout);
}

if (!Meteor.status().connected && Meteor.status().status !== 'offline' && Meteor.status().retryCount > 0) {
console.log("Connection to server has been LOST!");
} else {
console.log("Connection to server has been RESTORED!");
// put subscription logic here
}
});

这里需要注意的是,我不确定第一次加载应用程序时会发生什么。我不确定您的订阅逻辑是否会运行,或者它是否只会在以后重新连接后运行(您可以对此进行测试)。

3) 这只是理论上的。看起来您应该能够将订阅参数存储在 Session 中,并将您的订阅逻辑放在 autorun 中。重新连接后,理论上 autorun 应该再次运行。假设它位于某个模板的内部,那么它看起来像这样。

this.autorun(() => {
this.subscribe('Members', Session.get('sub_params'));
});

4) 您可以在 client Meteor.connection._stream object 上设置一些回调你可能会使用。可用的选项包括 messageresetdisconnect。我之前在 message 上使用回调进行调试(见下文)。

Meteor.connection._stream.on('message', function (message) {
console.log("receive", JSON.parse(message));
});

假设在重新建立连接时触发 reset,那么您可以将订阅逻辑放在那里。

Meteor.connection._stream.on('reset', function () {
// subscription logic here
});

祝你好运!

关于javascript - meteor onConnection 客户端 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43146614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com