JsSIP.UA.JsSIP 总是返回错误:422 Session Interval Too Small

具体的解决方法如下:

JsSIP.js中的搜索 SESSION_EXPIRES:

把这个参数改大,  大于120就行了, (要是还不行,就继续加大吧^.^)

SESSION_EXPIRES: 90

加大:

SESSION_EXPIRES: 360

 

可以在使用时修改配置:

JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=120;

FreeSWITCH 默认设置要求 Session Expires 不低于120 .

原理如下:  SIP进行时

一直以“简单”著称的SIP其实也没那么简单,不过任何事物想掌握它都很困难。

文档旨在不断的记录SIP使用过程中遇到的各种疑惑和问题。

一、响应422 Session Interval Too Small

  发送的Invite消息如下:


INVITE sip:806@192.168.8.11 SIP/2.0
Via: SIP/2.0/WS 9srpbdc87v1s.invalid;branch=z9hG4bK774681
Max-Forwards: 69
To: <sip:806@192.168.8.11>
From: "801" <sip:801@192.168.8.11>;tag=ii5b0f08lb
Call-ID: 0egn2qmnq0hhrho2ccll
CSeq: 1869 INVITE
X-Can-Renegotiate: true
Contact: <sip:lo6vk6jn@9srpbdc87v1s.invalid;transport=ws;ob>
Content-Type: application/sdp
Session-Expires: 90
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER
Supported: timer,ice,replaces,outbound
User-Agent: JsSIP 0.7.9
Content-Length: 2613

v=0
o=- 6735531044150428780 2 IN IP4 127.0.0.1
……

  收到的响应如下:


SIP/2.0 422 Session Interval Too Small
Via: SIP/2.0/WS 9srpbdc87v1s.invalid;branch=z9hG4bK774681;received=192.168.8.11;rport=8012
From: "801" <sip:801@192.168.8.11>;tag=ii5b0f08lb
To: <sip:806@192.168.8.11>;tag=Q8XBrSc8NXHrH
Call-ID: 0egn2qmnq0hhrho2ccll
CSeq: 1869 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.4.15+git~20150828T032007Z~014bbaf57d~32bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Min-SE: 120
Content-Length: 0

  原理:SIP(RFC3261)没有提供已存在会话保持激活的机制,虽然可以终端可以使用某些方式了解会话是否存活,但proxy却无法做到这一点。Re-INVITE和UPDATE方法就基于此进行的,这些刷新请求的周期是通过协商来确定的。当在规定的周期内没有新的刷新请求到来,即认为该会话结束。为了控制通过re-INVITE和UPDATE方法进行周期性的会话(session)刷新,以判别会话两端是否存活,增加了两个头域:Session-Expires(会话的生命期)和Min-SE(会话时钟的最小值)。

  其中Min-SE头域中的值只能增加不能减少,Session-Expires头域的值只能减少不能增加,但不能少于Min-SE头域中的值。

  当Proxy无法接受请求中的Session-Expires值时(小于Min-SE值),Proxy会回复422,UAC会继续发起请求,但会携带422中的Min-SE头域;

  当请求到达UAS时,UAS会在2**的应答中Session-Expires头域中填写最后的结果,且会携带参数refresher(指示当前的UAC或UAS谁来进行刷新),2**的回复,Proxy无法修改Session-Expires头域。

  问题了然。修改Min-SE或者Session-Expires头域满足Session-Expires >= Min-SE就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值