Иногда происходит сбой соединения WebRT C при соединении двух RTCPeerConnections на одной вкладке браузера - PullRequest
6 голосов
/ 19 февраля 2020

Я использую WebRT C для облегчения одноранговых соединений в многопользовательской браузерной игре. Один узел выбран в качестве хоста, к которому будут подключаться другие клиенты. Узел хоста запускает логи клиента и сервера c. Все клиенты (включая клиент хоста) подключаются к серверу хоста через WebRT C.

Иногда я вижу, что хост-клиент -> хост-сервер WebRT C Не удается установить соединение по неизвестной причине. Логи клиента и сервера хоста c работают на одной вкладке / Javascript VM, поэтому это может помочь визуализировать эту настройку в виде некоего петлевого соединения на странице.

Поток сбоя при установлении соединения выглядит следующим образом:

Failed WEBRTC Connection Flow

В конце этого потока (который занимает ~ 5 секунд) оба Клиент и хост RTCPeerConnections находятся в следующем состоянии (и никогда не переходят отсюда):

RTCPeerConnection.iceConnectionState: "disconnected"
RTCPeerConnection.connectionState: "failed"
RTCPeerConnection.iceGatheringState: "complete"

Кандидаты предложений, ответов и ICE, которыми обмениваются в этом потоке, выглядят так:

Предложение клиента

{"type":"offer","sdp":"v=0\r\no=- 8829702333684311109 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:67dh\r\na=ice-pwd:YxRQGGpaV6OkuogZxjhA3W1l\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:13:F7:B5:3B:69:33:5F:40:ED:D9:52:2F:83:EC:B5:5A:D4:7E:0D:1A:08:F5:39:E9:02:AB:4E:7E:6B:50:D9\r\na=setup:actpass\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}

Ответ хоста

{"type":"answer","sdp":"v=0\r\no=- 657100447142081608 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:4eiM\r\na=ice-pwd:JlAUG/0qxZpEsOMT0neKg7LK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DC:EB:66:5F:C9:73:A9:96:37:7C:A8:21:8E:81:6C:8D:1B:78:47:45:39:76:83:CD:D2:4F:E9:94:72:C7:FD:3B\r\na=setup:active\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}

Кандидаты ICE клиента

  1. {"candidate":"candidate:585712035 1 udp 2113937151 0322602a-bcc1-41b4-96e3-963022b99529.local 55860 typ host generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  2. {"candidate":"candidate:1593308690 1 udp 2113939711 c34a088f-0835-4e78-aa33-7b4206079a3c.local 55861 typ host generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  3. {"candidate":"candidate:842163049 1 udp 1677729535 5.64.56.196 55860 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  4. null

Кандидаты на ведущий ICE

  1. {"candidate":"candidate:585712035 1 udp 2113937151 0322602a-bcc1-41b4-96e3-963022b99529.local 54514 typ host generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  2. {"candidate":"candidate:1593308690 1 udp 2113939711 c34a088f-0835-4e78-aa33-7b4206079a3c.local 54515 typ host generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  3. {"candidate":"candidate:842163049 1 udp 1677729535 5.64.56.196 54514 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
  4. null

Браузер

Chrome Версия 79.0.3945.130 .

...