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

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

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

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

Есть ли рекомендации по повторной регистрации всех активных подписок при повторном подключении? Может быть, это даже настраивается?


person markop    schedule 18.03.2017    source источник


Ответы (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');
person andrzej1_1    schedule 19.03.2017
comment
Спасибо. Это почти делает это. Я бы всегда помещал функции подписки в массив onOpenFunctions, потому что их нужно повторно выполнять при каждом отключении сети и повторном подключении. Поэтому я бы удалил if в «addOnOpenFunction» и всегда использовал его первый блок. - person markop; 21.03.2017
comment
Я обновил код в addOnOpenFunction(). Пожалуйста, примите ответ, если он правильный сейчас. - person andrzej1_1; 21.03.2017
comment
если подумать, это должно быть включено в autobahn-js как опция в функции подписки. Я подам запрос функции. - person markop; 21.03.2017