SIPJS对接FreeSWITCH强制媒体流走coturn relay地址
在使用SIPJS库对接FreeSWITCH时,发现fs在协商candidate地址时(),经常优先选择它所认为的内网地址,有时这个地址是不通的,比如,客户端携带的host candidate是10.x.y.z地址,而fs所在内网地址也是10.a.b.c,但fs的10网段和客户端的10网段如果不是同一个,这时如果fs再选择10的candidate地址进行通信,双方肯定是不通的;有时即使客户端有带relay的candidate,fs仍然会选择10的host地址。怎么强制或优先使用relay的candidate地址,查阅资料发现可以在客户端只携带relay地址,具体修改内容如下:
在sip-x.y.z.js中创建RTCPeerConnection对象时,强制加上如下配置
iceTransportPolicy: 'relay'
完整内容如下:
this.peerConnection = new SIP.WebRTC.RTCPeerConnection({'iceServers': servers,iceTransportPolicy: 'relay'
}, this.RTCConstraints);
这时客户端的sdp信息如下:
recv 1869 bytes from wss/[172.18.0.1]:35212 at 17:33:23.854196:
------------------------------------------------------------------------
SIP/2.0 200 OK
Via: SIP/2.0/WSS 172.18.0.4:7443;branch=z9hG4bK1269apDa9F7Hc
To: <sip:4d88ahcf@7rcbukgvj170.invalid;transport=ws>;tag=j9vpr59n8o
From: "" <sip:0000000000@172.18.0.4>;tag=3H2N3DtjN5rjB
Call-ID: d9c97967-0cb9-123f-76ae-5290e2d4e7ca
CSeq: 104410606 INVITE
Contact: <sip:4d88ahcf@7rcbukgvj170.invalid;transport=ws>
Supported: outbound
Content-Type: application/sdp
Content-Length: 1460
v=0
o=- 8016230884204814534 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS X8EaD0KHV8ShFk8m8snYgjauBBIl3JnsL5jx
m=audio 14409 RTP/SAVPF 9 0 8 101
c=IN IP4 172.18.0.3
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:1284565503 1 udp 33562367 172.18.0.3 14409 typ relay raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=ice-ufrag:Zvcx
a=ice-pwd:fHIGe06wmI9667d2/3vjmrnQ
a=ice-options:trickle
a=fingerprint:sha-256 01:84:4D:EC:20:A1:8B:BF:A5:E9:A1:05:F1:39:17:CA:DA:0D:94:80:88:00:A1:4F:67:5D:27:9C:F9:CD:67:C8
a=setup:active
a=mid:0
a=sendrecv
a=rtcp-mux
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=ssrc:1442711766 cname:fTE6CUrcIdahtqBW
a=ssrc:1442711766 msid:X8EaD0KHV8ShFk8m8snYgjauBBIl3JnsL5jx 5da4352c-d1e5-4311-aa3e-34d89ef35e67
a=ssrc:1442711766 mslabel:X8EaD0KHV8ShFk8m8snYgjauBBIl3JnsL5jx
a=ssrc:1442711766 label:5da4352c-d1e5-4311-aa3e-34d89ef35e67
m=video 18513 RTP/SAVPF 102
c=IN IP4 172.18.0.3
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:1284565503 1 udp 33562367 172.18.0.3 18513 typ relay raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=ice-ufrag:4ja7
a=ice-pwd:xyYc1EwFSJieS6DaMW08y9FC
a=ice-options:trickle
a=fingerprint:sha-256 01:84:4D:EC:20:A1:8B:BF:A5:E9:A1:05:F1:39:17:CA:DA:0D:94:80:88:00:A1:4F:67:5D:27:9C:F9:CD:67:C8
a=setup:active
a=mid:1
a=recvonly
a=rtcp-mux
a=rtpmap:102 VP8/90000
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
------------------------------------------------------------------------