重新连接后重新建立 WAMP 订阅
reestablish WAMP subscriptions after reconnect
我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用 crossbar 消息路由器 (v17.2.1)。
万一网络断开连接(例如由于网络不佳),autobahn-js 客户端可以配置为尝试定期重新连接。
现在,在我的由高速公路提供支持的网络应用程序中,对不同 WAMP 主题的订阅是动态创建的 session.subscribe('my.topic', myhandleevent)
。
是否有关于如何在重新连接时重新注册所有活动订阅的最佳做法?这甚至可以配置吗?
我认为重新订阅不是开箱即用的配置。但是 onopen 在重新连接后被触发,所以在其中放置订阅初始化,将会做这件事:
var ses;
var onOpenFunctions = [];
function addOnOpenFunction(name) {
onOpenFunctions.push(name);
if (ses !== null) {
window[name]();
}
}
connection.onopen = function (session, details) {
ses = session;
for (var i = 0; i < onOpenFunctions.length; i++) {
window[onOpenFunctions[i]]();
}
};
那么如果你想动态订阅你必须这样做:
function subscribeTopic() {
session.subscribe('my.topic', myhandleevent)
}
addOnOpenFunction('subscribeTopic');
我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用 crossbar 消息路由器 (v17.2.1)。
万一网络断开连接(例如由于网络不佳),autobahn-js 客户端可以配置为尝试定期重新连接。
现在,在我的由高速公路提供支持的网络应用程序中,对不同 WAMP 主题的订阅是动态创建的 session.subscribe('my.topic', myhandleevent)
。
是否有关于如何在重新连接时重新注册所有活动订阅的最佳做法?这甚至可以配置吗?
我认为重新订阅不是开箱即用的配置。但是 onopen 在重新连接后被触发,所以在其中放置订阅初始化,将会做这件事:
var ses;
var onOpenFunctions = [];
function addOnOpenFunction(name) {
onOpenFunctions.push(name);
if (ses !== null) {
window[name]();
}
}
connection.onopen = function (session, details) {
ses = session;
for (var i = 0; i < onOpenFunctions.length; i++) {
window[onOpenFunctions[i]]();
}
};
那么如果你想动态订阅你必须这样做:
function subscribeTopic() {
session.subscribe('my.topic', myhandleevent)
}
addOnOpenFunction('subscribeTopic');