一种SIP状态服务的发布方法和装置与流程

文档序号:18898853发布日期:2019-10-18 21:39阅读:190来源:国知局
一种SIP状态服务的发布方法和装置与流程

本发明涉及通信技术领域,特别涉及一种会话初始协议(sessioninitiationprotocol,sip)状态服务的发布方法和装置。



背景技术:

sip服务器是ippbx的主要组件,负责建立和维护网络中所有的sip电话通话。它的主要功能有sip注册、sip业务处理、sip状态发布等等。

针对sip状态发布,简单的sip状态有sip终端的在线和离线状态,复杂的sip状态有业务状态,如群组的激活和空闲状态、sip终端的点呼状态、sip视频回传状态等。

参见图1,图1为现有实现中sip状态订阅和发布流程示意图。图1中sip终端通过sip信令订阅(subscribe)消息向sip服务器订阅状态,sip服务器通过sip信令确认(200ok)消息予以确认,同时通过sip信令通知(notify)消息按照一定规则向sip终端发布状态,sip终端回复sip信令200ok消息予以确认。

由于sip协议采用文本消息,且每条消息不建议大于2048个字节,因此消息中能够包含的sip状态容量小。如果sip终端订阅的sip状态多的话,需要发送多条消息。

消息大于2048个字节可能会在传输层分包,导致分包合包的消耗;多条sip消息,使得终端侧和服务器侧双方处理都很复杂,效率低下。



技术实现要素:

有鉴于此,本申请提供一种sip状态服务的发布方法和装置,以解决sip消息容量小的问题。

为解决上述技术问题,本申请的技术方案是这样实现的:

一种sip状态服务的发布方法,应用于sip服务器上,该方法包括:

接收到sip终端发送的订阅subscribe消息时,向sip终端发送200ok消息;

获取该sip终端订阅的所有终端的最新sip状态,携带在tcp消息中,发送给该sip终端。

一种sip状态服务的发布装置,应用于sip服务器上,该装置包括:接收单元、第一发送单元、获取单元和第二发送单元;

所述接收单元,用于接收订阅subscribe消息;

所述第一发送单元,用于当所述接收单元接收到sip终端发送的subscribe消息时,向sip终端发送确认200ok消息;

所述获取单元,用于当所述接收单元接收到sip终端发送的subscribe消息时,获取该sip终端订阅的所有终端的最新sip状态,携带在tcp消息中;

所述第二发送单元,用于将所述获取单元中的tcp消息发送给该sip终端。

由上面的技术方案可知,本申请中通过传输控制协议(transmissioncontrolprotocol,tcp)消息来代替sip消息发布sip终端订阅的sip状态,能够提高消息的信息容量,减少服务器侧和终端侧的消息交互,简化了sip服务器sip状态发布的处理流程。

附图说明

图1为现有实现中sip状态订阅和发布流程示意图;

图2为本申请实施例中sip状态服务发布流程示意图;

图3为本申请实施例中通知sip终端订阅的sip状态更新的流程示意图;

图4为本申请实施例中应用于上述技术的装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。

本申请实施例中提供一种sip状态服务的发布方法,通过tcp消息来代替sip消息发布sip终端订阅的sip状态,能够提高消息的信息容量,减少服务器侧和终端侧的消息交互,简化了sip服务器sip状态发布的处理流程。

本申请实施例中针对简单sip状态有sip终端的在线和离线状态,复杂的sip状态有业务状态,如群组的激活和空闲状态、sip终端的点呼状态、sip视频回传状态等,本申请实施例中可以根据实际需要,使用本申请提供的状态发布方案发布所需要发布的sip状态。

下面结合附图,详细说明本申请实施例中实现sip状态服务的发布过程。

本申请实施例中sip服务器在sip状态缓存区中存储所在网络中的所有sip终端产生的状态。

当任一sip终端的状态发生变化时,将对应sip终端变化后的状态更新到sip状态缓存区中。

参见图2,图2为本申请实施例中sip状态服务发布流程示意图。具体步骤为:

步骤201,sip服务器接收到sip终端发送的subscribe消息时,向sip终端发送200ok消息。

本步骤的具体实现过程同现有实现,sip终端发送subscribe消息请求sip状态,以及服务器针对该subscribe消息的响应均使用sip协议完成。

步骤202,sip服务器获取该sip终端订阅的所有终端的最新sip状态,携带在tcp消息中,发送给该sip终端。

本步骤中获取对应sip终端订阅的所有sip状态时,从sip状态缓存区中获取。

本步骤中将sip终端订阅的sip状态通过一条tcp消息发送给sip终端。

sip终端接收到tcp消息后,从该tcp消息中获取当前订阅的所有的sip状态。

下面结合附图,详细描述sip状态更新后如何通知订阅对应状态的sip终端。

参见图3,图3为本申请实施例中通知sip终端订阅的sip状态更新的流程示意图。

步骤301,sip服务器周期性获取sip状态缓存区中被所有sip终端订阅的,且与上一周期相比状态发生改变的sip状态,并携带在一条tcp消息中。

本步骤中对于如何确定哪个sip终端的sip状态在本周期中发生改变的实现方式不进行限制,如可以在任一sip状态更新的同时,增加更新标记;并在当前周期sip状态发生改变的sip状态发送给sip终端后,将更新标记删除;

还可以同时维护两个周期的sip状态,比较确定变化的sip状态。

步骤302,该sip服务器将该tcp消息发送给所有订阅sip状态的sip终端,使对应sip终端根据本地的订阅列表获取所订阅的sip状态。

各sip终端根据自己订阅的sip终端列表,从消息中取出它所需要的sip状态。

本实施例中sip服务器把所有被订阅的sip状态打包在一起,在sip服务器上组装成一条大而全的tcp消息,发给所有订阅状态的sip终端,由sip终端自己来过滤它所需要的sip状态。能够大大减少sip服务器和sip终端之间消息的交互。

本申请实施例中使用tcp消息向一个终端发送订阅的sip状态,或者向多个终端发布更新的被订阅的sip状态时,可以将两条tcp消息加标志字段区分,也可以不区分,均由接收到的sip终端根据本地的订阅列表获取需要的sip状态即可。

基于同样的发明构思,本申请还提出一种sip状态服务的发布装置,应用于sip服务器上。参见图4,图4为本申请实施例中应用于上述技术的装置结构示意图。该装置包括:接收单元401、第一发送单元402、获取单元403和第二发送单元404;

接收单元401,用于接收subscribe消息;

第一发送单元402,用于当接收单元401接收到sip终端发送的subscribe消息时,向sip终端发送确认200ok消息;

获取单元403,用于当接收单元401接收到sip终端发送的subscribe消息时,获取该sip终端订阅的所有终端的最新sip状态,携带在传输控制协议tcp消息中;

第二发送单元404,用于将获取单元403中的tcp消息发送给该sip终端。

较佳地,该装置进一步包括:存储单元405;

存储单元405,用于将sip服务器所在网络中的所有sip终端产生的状态存入sip状态缓存区中。

较佳地,

存储单元405,进一步用于当任一sip终端的状态发生变化时,将对应sip终端变化后的状态更新到sip状态缓存区中。

较佳地,

获取单元403,进一步用于周期性获取存储单元405中的sip状态缓存区中被所有sip终端订阅的,且与上一周期相比状态发生改变的sip状态,并携带在一条tcp消息中;

第二发送单元404,进一步用于将获取单元403中的tcp消息发送给所有订阅sip状态的sip终端,使对应sip终端根据本地的订阅列表获取所订阅的sip状态。

较佳地,

获取单元403,具体用于从存储单元405中的sip状态缓存区中获取该sip终端订阅的所有终端的最新sip状态。

上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。

综上所述,本申请通过tcp消息来代替sip消息发布sip终端订阅的sip状态,能够提高消息的信息容量,减少服务器侧和终端侧的消息交互,简化了sip服务器sip状态发布的处理流程。

本申请实施例提供的sip状态服务的大规模发布解决方案,将sip终端的状态缓冲机制从o(n2)的复杂度降低为o(n),大大减少了sip服务器内部的消息分发量,简化了sip服务器sip状态发布的处理流程。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1