在旧会话过期后重新启动 cometd 会话的最佳方法是什么?特别是在使用 CometD Javascript 库和 Salesforce Streaming API 时。
目前我正在尝试编写一系列使用 Salesforce Streaming API(使用 Cometd 运行)的网页,以自动更新页面上的数据。这工作正常,但我现在正在尝试处理会话到期后要做什么。
目前我正在一个非常小的时间范围内进行测试,特别是 20 秒。我两次调用下面的代码。首先在页面加载时,然后在 20 秒后再次加载。
$.cometd.clearListeners();
$.cometd.init({
url:window.location.protocol+'//'+window.location.hostname+'/cometd/28.0/',
requestHeaders: { Authorization: 'OAuth {!$Api.Session_ID}'}
});
[Initialize Subscriptions]
这工作正常,但并非没有一些我想避免的问题。
看起来如果我在上面的代码第二次运行之前通过我的订阅收到一个调用,我的订阅处理程序会在它捕获的下一次调用中触发两次。我尝试用 $.cometd.handshake 替换 $.cometd.init,但这似乎永远不会起作用,除非我的订阅在第二次调用上面的代码之前收到了一个电话。我也尝试调用 $.cometd.disconnect,但这似乎会阻止任何调用在调用该函数后到达我的订阅,即使我同步运行它也是如此。
我做得对吗,20秒的间隔把事情搞砸了,还是有更好的方法来做到这一点?