Восстановить подписки WAMP после повторного подключения

Я использую autobahn-js (0.11.2) в веб-браузере и маршрутизатор пересекающихся сообщений (v17.2.1) в бэкэнде.

В случае отключения сети (например, из-за плохой сети) клиент autobahn-js может быть настроен на периодическое повторное подключение.

Теперь в моем веб-приложении на основе автобана создаются подписки на разные темы WAMP session.subscribe('my.topic', myhandleevent) динамически.

Существует ли передовая практика, как перерегистрировать все активные подписки при повторном подключении? Это может быть даже настраивается?

1 ответ

Решение

Я думаю, что повторные подписки не настраиваются из коробки. Но 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');
Другие вопросы по тегам