WebRTC ICE 连接在 safari 和 firefox 之间使用 Angular 失败,即使收集了 ice candidates
WebRTC ICE connection fails using Angular between safari and firefox even when ice candidates are gathered
从 Firefox 61.0.1 调用 Safari 11.1.2 结果在 Angular 5.x 应用程序中收集所有候选人后 ICE 连接失败。
该应用正在使用 webrtc-adapter 添加跨浏览器支持。
已测试的浏览器:
- 火狐 61.0.1
- 歌剧 54
- Safari 11.1.2 + 移动版 Safari
- Chrome 67
- 边 42
平台:macOS High Sierra 10.13.6
所有其他浏览器组合均有效。
这是来自 firefox 的 webrtc 日志:
insert 'ice' (registry) succeeded: ice
insert 'ice.pref' (registry) succeeded: ice.pref
insert 'ice.pref.type' (registry) succeeded: ice.pref.type
insert 'ice.pref.type.srv_rflx' (UCHAR) succeeded: 0x64
insert 'ice.pref.type.peer_rflx' (UCHAR) succeeded: 0x6e
insert 'ice.pref.type.host' (UCHAR) succeeded: 0x7e
insert 'ice.pref.type.relayed' (UCHAR) succeeded: 0x05
insert 'ice.pref.type.srv_rflx_tcp' (UCHAR) succeeded: 0x63
insert 'ice.pref.type.peer_rflx_tcp' (UCHAR) succeeded: 0x6d
insert 'ice.pref.type.host_tcp' (UCHAR) succeeded: 0x7d
insert 'ice.pref.type.relayed_tcp' (UCHAR) succeeded: 0x00
insert 'stun' (registry) succeeded: stun
insert 'stun.client' (registry) succeeded: stun.client
insert 'stun.client.maximum_transmits' (UINT4) succeeded: 7
insert 'ice.trickle_grace_period' (UINT4) succeeded: 5000
insert 'ice.tcp' (registry) succeeded: ice.tcp
insert 'ice.tcp.so_sock_count' (INT4) succeeded: 0
insert 'ice.tcp.listen_backlog' (INT4) succeeded: 10
insert 'ice.tcp.disable' (char) succeeded: [=11=]0
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=1
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=2
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with non-empty check lists
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with pre-answer requests
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no checks to start
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:57340/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x160026df4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:53521/UDP|turn.example.com:443)
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:63335/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:57340/UDP|IP4:0.0.0.0:63335/UDP)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x1600291f4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:50605/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:53521/UDP|IP4:0.0.0.0:50605/UDP)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x1600291f4) pending)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x160026df4) pending)
UpdateBufferedAmount: (tracking 1): 0, waiting: no
UpdateBufferedAmount: (tracking 1): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
UpdateBufferedAmount: (tracking 2): 0, waiting: no
UpdateBufferedAmount: (tracking 2): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:58399/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:58399/UDP)
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:56773/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:56773/UDP)
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default)/STREAM(0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default): all checks completed success=0 fail=1
TURN(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): deallocating
UpdateBufferedAmount: (tracking 3): 0, waiting: no
UpdateBufferedAmount: (tracking 3): 0, waiting: no
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=1
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=2
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with non-empty check lists
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with pre-answer requests
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no checks to start
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:55447/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:55447/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x14d18e5f4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:56397/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:55447/UDP|IP4:0.0.0.0:56397/UDP)
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:57093/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:57093/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x14d18fdf4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:60501/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:57093/UDP|IP4:0.0.0.0:60501/UDP)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x14d18fdf4) pending)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x14d18e5f4) pending)
UpdateBufferedAmount: (tracking 1): 0, waiting: no
UpdateBufferedAmount: (tracking 1): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
UpdateBufferedAmount: (tracking 2): 0, waiting: no
UpdateBufferedAmount: (tracking 2): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:50309/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:50309/UDP)
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:62199/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:62199/UDP)
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default)/STREAM(0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default): all checks completed success=0 fail=1
+++++++ END ++++++++
问题的发生是因为 zone.js
和 adapter-js
都将它们的包装器放在各种 RTC 方法之上。
解决方案是在 polyfills.ts
文件的末尾添加以下行。
import 'zone.js/dist/webapis-rtc-peer-connection';
更多信息:
从 Firefox 61.0.1 调用 Safari 11.1.2 结果在 Angular 5.x 应用程序中收集所有候选人后 ICE 连接失败。
该应用正在使用 webrtc-adapter 添加跨浏览器支持。
已测试的浏览器:
- 火狐 61.0.1
- 歌剧 54
- Safari 11.1.2 + 移动版 Safari
- Chrome 67
- 边 42
平台:macOS High Sierra 10.13.6
所有其他浏览器组合均有效。
这是来自 firefox 的 webrtc 日志:
insert 'ice' (registry) succeeded: ice
insert 'ice.pref' (registry) succeeded: ice.pref
insert 'ice.pref.type' (registry) succeeded: ice.pref.type
insert 'ice.pref.type.srv_rflx' (UCHAR) succeeded: 0x64
insert 'ice.pref.type.peer_rflx' (UCHAR) succeeded: 0x6e
insert 'ice.pref.type.host' (UCHAR) succeeded: 0x7e
insert 'ice.pref.type.relayed' (UCHAR) succeeded: 0x05
insert 'ice.pref.type.srv_rflx_tcp' (UCHAR) succeeded: 0x63
insert 'ice.pref.type.peer_rflx_tcp' (UCHAR) succeeded: 0x6d
insert 'ice.pref.type.host_tcp' (UCHAR) succeeded: 0x7d
insert 'ice.pref.type.relayed_tcp' (UCHAR) succeeded: 0x00
insert 'stun' (registry) succeeded: stun
insert 'stun.client' (registry) succeeded: stun.client
insert 'stun.client.maximum_transmits' (UINT4) succeeded: 7
insert 'ice.trickle_grace_period' (UINT4) succeeded: 5000
insert 'ice.tcp' (registry) succeeded: ice.tcp
insert 'ice.tcp.so_sock_count' (INT4) succeeded: 0
insert 'ice.tcp.listen_backlog' (INT4) succeeded: 10
insert 'ice.tcp.disable' (char) succeeded: [=11=]0
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=1
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=2
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with non-empty check lists
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with pre-answer requests
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) no checks to start
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:57340/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x160026df4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:53521/UDP|turn.example.com:443)
STUN-CLIENT(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:63335/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:57340/UDP|IP4:0.0.0.0:63335/UDP)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x1600291f4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:50605/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:53521/UDP|IP4:0.0.0.0:50605/UDP)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x1600291f4) pending)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x160026df4) pending)
UpdateBufferedAmount: (tracking 1): 0, waiting: no
UpdateBufferedAmount: (tracking 1): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
UpdateBufferedAmount: (tracking 2): 0, waiting: no
UpdateBufferedAmount: (tracking 2): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:58399/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:58399/UDP)
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:56773/UDP lifetime=3600
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:56773/UDP)
ICE(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default)/STREAM(0-1531925753097790 (id=25769803783 url=http://localhost:4242/call/1 aLevel=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1531925753097790 (id=25769803783 url=http://localhost:4242/call/1:default): all checks completed success=0 fail=1
TURN(relay(IP4:10.0.8.47:57340/UDP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:53521/UDP|turn.example.com:443)): deallocating
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): deallocating
UpdateBufferedAmount: (tracking 3): 0, waiting: no
UpdateBufferedAmount: (tracking 3): 0, waiting: no
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:173 function nr_socket_multi_tcp_create_stun_server_socket skipping UDP STUN server(addr:)
/builds/worker/workspace/build/src/media/mtransport/third_party/nICEr/src/net/nr_socket_multi_tcp.c:617 function nr_socket_multi_tcp_listen failed with error 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): failed to create passive TCP host candidate: 3
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=1
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) has no stream matching stream 0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=2
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with non-empty check lists
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no streams with pre-answer requests
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) no checks to start
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:55447/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:55447/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x14d18e5f4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:55447/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:56397/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:55447/UDP|IP4:0.0.0.0:56397/UDP)
Unrecognized attribute: 0x802b
STUN-CLIENT(srflx(IP4:10.0.8.47:57093/UDP|turn.example.com:443)): Received response; processing
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate srflx(IP4:10.0.8.47:57093/UDP|turn.example.com:443)
Write buffer not empty for IP4:0.0.0.0:443/TCP 44 - already armed (@0x14d18fdf4), not connected
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:57093/UDP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:60501/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:57093/UDP|IP4:0.0.0.0:60501/UDP)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x14d18fdf4) pending)
Firing write callback (0)
Invoking writable_cb on connected (44)
Writable_cb IP4:0.0.0.0:443/TCP (0 (0x14d18e5f4) pending)
UpdateBufferedAmount: (tracking 1): 0, waiting: no
UpdateBufferedAmount: (tracking 1): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Error processing response: Retry may be possible, stun error code 401.
UpdateBufferedAmount: (tracking 2): 0, waiting: no
UpdateBufferedAmount: (tracking 2): 0, waiting: no
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:50309/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:50309/UDP)
STUN-CLIENT(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)::TURN): Received response; processing
TURN(relay(IP4:10.0.8.47:0/TCP|turn.example.com:443)): Succesfully allocated addr IP4:0.0.0.0:62199/UDP lifetime=3600
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) pairing local trickle ICE candidate turn-relay(IP4:10.0.8.47:0/TCP|IP4:0.0.0.0:62199/UDP)
ICE(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1): peer (PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default) Trickle grace period is over; marking every component with only failed pairs as failed.
ICE-PEER(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default)/STREAM(0-1531926015943360 (id=25769803783 url=http://localhost:4242/call/1 aLevel=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.
ICE-PEER(PC:1531926015943360 (id=25769803783 url=http://localhost:4242/call/1:default): all checks completed success=0 fail=1
+++++++ END ++++++++
问题的发生是因为 zone.js
和 adapter-js
都将它们的包装器放在各种 RTC 方法之上。
解决方案是在 polyfills.ts
文件的末尾添加以下行。
import 'zone.js/dist/webapis-rtc-peer-connection';
更多信息: