2017-03-01 12 views
0

하나의 화상 통화 응용 프로그램을 개발 중입니다. 현재 Xirsys의 충격 및 회전 서버를 사용 중입니다. 내 구성으로 https://service.xirsys.com/ice의 결과를 사용하고 있습니다. Javascript 페이지 또는 기타 항목에서 사용할 올바른 사용자 이름 및 자격 증명입니까? 그것이 틀린 경우에 정확한 iceServers 가치를 어디서 얻을 것인지 안내 해주십시오. iceServers = [ { "url": "stun:turn01.uswest.xirsys.com" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:443?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:5349?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" } ];
참고 : 동일한 네트워크에서 작동하지만 다른 네트워크에서는 작동하지 않습니다. 다른 네트워크에서도 incomming 호출을 얻을 수 있지만 iceConnectionState 호출을 수신 한 후에는 실패합니다.
나는 또한 기절 및 회전 서버로 마비를 사용하는 유사한 질문 here을 제기했습니다.Xirsys iceConnectionStatus가 실패했습니다.

미리 감사드립니다.

답변

2

ICR 문자열은 WebRTC 응용 프로그램의 얼음 구성에서 '있는 그대로'사용해야합니다. 그러나 ICE 자격 증명은 30 초 동안 만 유효합니다. 각 연결 직전에 새로운 ICE 문자열을 요청해야합니다.

NAT 변환이 TURN/STUN을 사용하지 않으므로 로컬 네트워크 연결은 유효한 ICE 문자열없이 작동합니다. 이는 NAT가 로컬 IP 자체를 변환하기 때문입니다. 따라서 로컬 네트워크 연결은 항상 작동합니다 (비 일반적인 NAT 상황이 아니면). ICE 자격 증명을 각 통화 전에 새로 고치지 않고 사용했다면 외부 연결이 실패했는지 (또는 확실히 문제에 기여할 것인가) 분명합니다.

+0

고마워! 내 문제에 대한이 명백한 설명. 나는 의심이 하나 더있다. 전화하기 전에 신선한 얼음 끈을달라고 요청할 수 있습니다. 하지만 수신 측에서도 동일한 것이 필요합니까? 또는 서버 측에서 구성 할 수있는 다른 방법이 있습니다 (피어 - 서버). 제발 좀 더 자세히 설명해주세요. 다시 한번 감사드립니다. – Amrendra

+0

제안한대로 코드를 수정했습니다. 이제 발신자 측에서 통화를 시작하기 바로 전에 얼음 줄이 나타납니다. 그리고 수신기 측에서는 어떤 설정 속성도 설정되지 않습니다. 하지만 여전히 문제가 있습니다. 얼음 문자열을 _config : {data.d} _ 같이 제공하고 있습니다. – Amrendra

+0

ICE 문자열은 클라이언트 (발신자)가 (시그널링을 통해 공유하므로) 필요합니다. 당신은 당신이하고있는 것처럼 보이는 data.d 값을 전달하면됩니다. chrome : // webrtc-internals의 덤프를 제공 할 수 있습니까? 이것은 TURN/STUN 서버가 사용중인 것을 보여 주며 단순히 ICE 문자열을 올바르게 앱에 가져 오지 못하거나 문제가 다른 곳에서 발생한 경우 해결하는데 도움이됩니다. –