2014-12-15 3 views
2

사용자가 다른 음성 회의실 (세션)간에 전환 할 수있는 응용 프로그램을 만들고 있습니다. 함수 'connectToSession'(아래 참조)은 사용자가 이미 세션에 있는지 확인하고, 현재 세션과의 연결을 끊은 다음 다른 세션에 연결하여 해당 세션에 스트림을 게시합니다.세션 간 Opentok 전환

음성 객실의 스위칭 잘 작동하고 사용자에게 그러나 때마다 사용자가 세션은 내가 콘솔에서이 오류가 스위치 모두 작동하는 apears입니다

: 내이가 보인다 디버깅에서

Publisher State Change Failed: 'Publishing' cannot transition to 'PublishingToSession' 
Publisher State Change Failed: 'Publishing' cannot transition to 'Publishing' 

을 session.publish가 호출 된 행에서 발생했습니다.

var session = null; 
var publisher = null; 
var subscribers = {}; 

function connectToSession(sessionId, token) { 
    if (session) { 
     session.disconnect(); 
    } 

    if (!publisher) { 
     //First time so we need to initialise publisher 
     var pubOptions = { 
      videoSource: null, 
      name: user_id 
     }; 

     publisher = OT.initPublisher(null, pubOptions, function() { 
      //Publisher initialised 
     }); 

     publisher.on({ 
      'streamDestroyed': function(event) { 
       event.preventDefault(); 
      } 
     }); 
    } 

    session = OT.initSession(apiKey, sessionId); 

    session.on({ 
     'streamCreated': function(event) { 
      // Subscribe to others stream 
      subscribers[event.stream.name] = session.subscribe(event.stream); 
     }, 
     'sessionConnected': function(sessionConnectEvent) { 
      // Session Connected 
     }, 
     'streamDestroyed': function(event) { 
      //Stream removed from session 
      delete subscribers[event.stream.name]; 
     } 
    }); 

    session.connect(token, 
     function(error) { 
      if (error) { 
       console.error(error); 
      } 
      else { 
       session.publish(publisher, function() { 
         //Finished publishing 
        } 
       ); 
      } 
    }); 
} 

이 오류의 원인은 무엇입니까?

답변

1
if (session) { 
    if (publisher) { 
     session.unpublish(publisher); 
    } 
    session.disconnect(); 
} 

해결 방법은 세션에서 연결을 끊기 전에 명시 적으로 게시자의 게시 취소를 호출하는 것입니다.

+0

감사합니다. 문서를 업데이트해야 할 수도 있습니다. https://tokbox.com/opentok/libraries/client/js/reference/Session.html#disconnect를 함께 호출해서는 안됩니다. –