2017-03-17 4 views
1

나는 고객과 우리 사이에 블로그를 개설하여 서로 다른 상업 거래에 대해 이야기 할 공간을 가질 수 있습니다 (각각의 상업 거래는 참조 번호가 있으며 자신의 정보를 가지고 있습니다).Autobahn JS 서브 스크립 션 관리

지금 당장 나는 이것을 달성하기 위해 ZeroMQ와 Autobahn으로 래칫을 설정할 수있었습니다. 사용자가 블로그를 업데이트 할 때마다 블로그에 가입 한 나머지 사용자는 브라우저에 푸시 된 정보를 가져옵니다.

그러나 메인 페이지의 버튼에 가입 방법이 링크되어 있습니다. (전체 아이디어는 왼쪽 메뉴 막대에서 참조를 클릭하고 블로그 항목이 화면의 오른쪽에 나타납니다).

사용자가 동일한 참조를 여러 번 클릭하거나 다른 참조로 이동 한 다음 첫 번째 참조로 돌아 오는 경우 블로그에 업데이트가있을 때마다 사용자가 여러 참조를받습니다. 업데이트 (클릭당 한 번 -> 클릭 할 때마다 구독이 트리거 됨).

어떻게 이런 일이 발생하지 않도록 할 수 있습니까? 당신은 새로운 WAMP 세션 및 각 버튼 클릭에 해당 세션에 가입 모두를 만드는

$('.reference-container').on('click', function(){ 
    idReferencia = $(this).attr('id'); 
    $('#modifyReference').val(idReferencia); 

    console.log('Creating connection with server on topic: ' + idReferencia + '..'); 


    var conn = new ab.Session('wss://plt.prolog-mex.com/wss2/', 

     function() { 
      conn.subscribe(idReferencia, function(topic, data) { 
       $('#messageBoard').prepend('<p class="message-nonown">'+data.article+'</p>') 
       console.log('New article published to category "' + topic + '" : ' + data.title); 
      }); 
     }, 
     function() { 
      console.warn('WebSocket connection closed'); 
     }, 
     {'skipSubprotocolCheck': true} 
    ); 
    console.log 
}); 
+0

"구독"이 무엇인지 머리 속에 직접 들어야하는 것처럼 들립니다. 그런 다음 코드에 대해 걱정하십시오. –

답변

1

:

은 다음과 같은 세션을 생성하는 JQuery와 보이는 방법입니다.

당신이해야 할 일은 이미 존재하는지 여부를 확인하고,이 경우에 아무 것도하지 않는 것입니다.

+0

감사합니다. @ gzost! 그것이 내가 생각한 것입니다. 그러나 그런 검증을 할 수 없었습니다. 문서를 보았습니다 만, 이것을 확인할 수없는 것처럼 보입니다. (저는 WAMP 세션에서 새로운 것입니다.) 어떤 통찰력을 주시겠습니까? (콘솔에 내 'conn' 변수를 보내려고해도 undefined를받습니다.) –

+0

초기 세션 설정 + 성공적인 가입 후,이 함수를 어딘가에 (예 : 전역 객체에) 저장해야합니다. 함수 내에서 정의 된 "conn"은 다음 함수 실행에서 액세스 할 수 없습니다. 함수의 실행 범위가 함수 실행의 범위로 제한되어 있기 때문입니다. – gzost

+0

정말 감사드립니다. 변수가 전역 변수인지 확인하기 위해 var을 사용하면 세션 정보에 액세스 할 수 있습니다. –

관련 문제