JSSIP WebRTC phone 30 秒后自动断开连接

JSSIP WebRTC phone auto disconnect after 30 second

我已经将 JSSIP http://tryit.jssip.net/ phone 嵌入到我们的应用程序中,它使用 Freeswitch 进行呼叫,除了呼叫之外的所有内容都会在 30 秒左右后断开连接我们看到的浏览器 JS 控制台日志如下,

Freeswitch 端,我看到来自 JSSIP phone 的重新邀请,当前 Freeswitch 配置为 bypass_media=true 模式。

JS 控制台登录浏览器:

JsSIP:InviteServerTransaction Timer L expired for transaction z9hG4bK9mjrH9cZ6FHtK +30s
jssip.js:21403 JsSIP:Transport received WebSocket text message:

BYE sip:50hn96ps@h1bf3jcld769.invalid;transport=ws SIP/2.0
Via: SIP/2.0/WSS 10.20.20.212:7443;branch=z9hG4bKDSQUrNgDUKa5H
Max-Forwards: 70
From: "Satish" <sip:1003@10.20.20.212>;tag=6aQ2K8U19X09j
To: <sip:50hn96ps@h1bf3jcld769.invalid;transport=ws>;tag=5vuctmpuh3
Call-ID: 07a9b5e7-7d8e-1233-c2bf-2a1507b53463
CSeq: 75946179 BYE
User-Agent: FreeSWITCH-mod_sofia/1.4.18-3-1~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Reason: Q.850;cause=96;text="MANDATORY_IE_MISSING"
Content-Length: 0


 +29s
jssip.js:21403 JsSIP:RTCSession receiveRequest() +12ms
jssip.js:21403 JsSIP:Transport sending WebSocket message:

SIP/2.0 200 OK
Via: SIP/2.0/WSS 10.20.20.212:7443;branch=z9hG4bKDSQUrNgDUKa5H
To: <sip:50hn96ps@h1bf3jcld769.invalid;transport=ws>;tag=5vuctmpuh3
From: "Satish" <sip:1003@10.20.20.212>;tag=6aQ2K8U19X09j
Call-ID: 07a9b5e7-7d8e-1233-c2bf-2a1507b53463
CSeq: 75946179 BYE
Supported: outbound
Content-Length: 0


 +0ms
jssip.js:21403 JsSIP:RTCSession session ended +1ms
jssip.js:21403 JsSIP:RTCSession close() +0ms
jssip.js:21403 rtcninja:RTCPeerConnection close() +0ms
jssip.js:21403 JsSIP:RTCSession close() | closing local MediaStream +7ms
jssip.js:21403 rtcninja:Adapter closeMediaStream() | calling stop() on all the MediaStreamTrack +1ms
jssip.js:21403 JsSIP:Dialog dialog 07a9b5e7-7d8e-1233-c2bf-2a1507b534635vuctmpuh36aQ2K8U19X09j deleted +1ms
jssip.js:21403 JsSIP:NonInviteServerTransaction Timer J expired for transaction z9hG4bKDSQUrNgDUKa5H +2ms
jssip.js:21403 rtcninja:RTCPeerConnection oniceconnectionstatechange() | iceConnectionState: closed +0ms
jssip.js:21403 rtcninja:RTCPeerConnection onsignalingstatechange() | signalingState: closed +1ms

更新:以上问题仅适用于 JSSIP phone,适用于 http://sipml5.org/ Webphone。

对于 phone 这是正常的,这可能是 OS 对 none-active app 的限制。

对于iOS 应用程序网络activity 超时大约为 30 秒。此应用程序网络请求后将不会发送。

对于Android 应用程序网络activity 超时大约为30 秒到3 分钟。

但请注意,关于 WebRTC Communications Consent:

Implementations MUST verify continuing consent at least every 30 seconds