2015-02-06 2 views
2

영어로 죄송합니다. webRTC에 문제가 있습니다. 내 응용 프로그램이 동일한 네트워크에서 올바르게 작동하지만 다른 응용 프로그램은 잘못되었습니다. 내가 사용하는WebRTC 다른 네트워크에 비디오가 없습니다.

기술 :

  • 커피 스크립트
  • 노드
  • Socket.IO에이 GitHub의에서 나는 내 코드를 밀어 : github/oihi08/webrtc

    응용 프로그램이 다른 네트워크에서 실행되지 않는 이유를 모르겠습니다. 나는 서버에 업로드했습니다. 나는 아무것도 시도하지 않았습니다. 그러나 같은 네트워크에서 그렇습니다.

    정말 고마워요 !!

    +0

    여기에 더 많은 정보가 필요합니다. 다른 네트워크가 연결 (방화벽, NAT 등)을 허용 할 수 있습니까? 제대로 설정되고 포맷 된 TURN 서버를 사용하고 있습니까? –

    +0

    메시징 용 소켓이 항상 "localhost : 8080"입니까? 원격 클라이언트가 메시징을 위해 서버에 어떻게 연결합니까? –

    +0

    또한 서버의 소켓을 테스트했지만 작동하지 않습니다. 이 주제에 대해 많이 알지 못해 WebRTC에 대해 배우고 있습니다. – oihi08

    답변

    2

    STUN/TURN 서버를 사용하지 않는 것 같습니다. 두 장치간에 연결을 생성하는 몇 가지 단계가 있습니다. 이 단계 중 하나는 하나 이상의 STUN/TURN 서버 (예 : 'stun : stun.l.google.com : 19302')를 선택하는 것입니다. 이 서버는 한쪽 또는 양쪽 끝에 방화벽이있을 때에도 피어 간의 연결을 만드는 데 사용됩니다.

    STUN/TURN 서버를 하나 이상 설치하면 얼음 후보가 생성되기 시작합니다. 생성 된 모든 제빙 후보자에 대해 콜백 함수 peerConnection.onicecandidate이 호출됩니다. 라이브러리가 얼음 후보를 생성 할 때 NULL 매개 변수로 콜백을 한 번 더 호출하면 이는 후보 목록의 끝에 플래그를 지정합니다.

    이러한 얼음 후보는 어떻게해서든지 상대방 피어에게 가져와야합니다. 대개 처음부터 연결을 생성하는 데 사용하는 신호 서버를 사용해야합니다. 다른쪽에 도착하면 peerconnection.addIceCandidate를 호출해야합니다.

    이러한 단계를 수행하면 NAT 유형이 엄격한 네트워크에서도 올바른 연결을 얻을 수 있습니다.

    +0

    게시 된 소스 코드 만 보면 STUN 서버를 많이 사용하고 있음을 알 수 있습니다. –

    +0

    @ BenjaminTrent 방금 내 대답을 읽은 경우, 그는 TURN 서버도 필요하다는 것을 알게 될 것입니다. 그는 또한 ICE 후보자를 보내지도 않고 반대편에 그들을두고 있습니다. – lorenzo373

    +0

    그는 커피 스크립트에서 그 논리가 작동하지 않는다면 그는 "onicecandidate"를 처리하고 신호를 보내는 것처럼 보입니다. –

    관련 문제