2017-03-18 12 views
3

웹 브라우저에서 autobahn-js (0.11.2)를 사용하고 백엔드에서 크로스바 메시지 라우터 (v17.2.1)를 사용하고 있습니다.다시 연결 한 후 WAMP 구독을 다시 설정하십시오.

네트워크 연결이 끊어진 경우 (예 : 네트워크가 열악한 경우) autobahn-js 클라이언트는 주기적으로 다시 연결을 시도하도록 구성 할 수 있습니다.

이제 내 웹 응용 프로그램에서 autobahn을 통해 다른 WAMP 항목을 구독하면 session.subscribe('my.topic', myhandleevent)이 동적으로 생성됩니다.

재 연결시 모든 활성 구독을 다시 등록하는 방법에 대한 모범 사례가 있습니까? 아마 심지어 구성 가능합니까?

답변

3

제가 생각하기에 재 구독은 즉시 사용 가능하도록 구성 할 수 없습니다. 그러나 으로 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'); 
+0

감사합니다. 이것은 거의 그것을한다. 나는 모든 네트워크 드롭에서 재실행하고 다시 연결해야하기 때문에 항상 onOpenFunctions 배열에 subscribe 함수를 넣을 것이다. 그래서 'addOnOpenFunction'에서'if'를 제거하고 항상 첫 번째 블록과 함께갑니다. – markop

+0

* addOnOpenFunction() *에서 코드를 업데이트했습니다. 지금 올바른 답변을 수락하십시오. –

+0

에 대해 생각해 보면, 이것은 autobahn-js에 구독 기능의 옵션으로 포함되어야합니다. 기능 요청을 보내 드리겠습니다. – markop