一种基于TCP实现话单下载的方法与流程

文档序号:11960166阅读:302来源:国知局

本发明涉及通讯技术领域,尤其涉及一种基于TCP实现话单下载的方法。



背景技术:

为了响应ECMA(欧洲计算机制造协会)建立CTI标准的运动,专门成立了一个代表主要PBX(程控用户交换机)制造商的委员会,该委员会制订了标准ECMA-179——计算机支持的电信应用服务(CSTA)和标准ECMA-180——计算机支持的电信应用协议,该协议是计算机与电信网间的OSI第7层通信协议。CSTA为集成计算机和电信网平台定义了总体结构、要求和协议。

在该协议中规定了话单的订阅、上报等接口。但是在上报话单的接口中每次只能发送一条话单,当PBX上短时间内产生大量呼叫的时候,话单的传输将严重影响CSTA其他事件的发送,导致其他呼叫事件发送延迟。在使用CSTA标准接口进行话单传送时,如果同时间存在大批量的呼叫时,服务器短时间内发送大量的话单,势必加重服务器的压力,同时客户端的SIP协议栈也会因为话单处理延时不能及时回复导致服务器话单积压,这样不仅会使服务器压力过大,也会导致一些重要话单丢失。另外,使用SIP协议的传送方式可以传送话单及其他事件,传输的数据量大,严重影响了话单的传输速度。

在此基础上我们研发了另一条通道进行话单传输的方式,通过另外开启一条TCP(Transmission Control Protocol,即传输控制协议)通道将产生的话单作为TCP的负载发送到客户端,该TCP通道是专门用来处理话单事件的,这样就可以来减轻服务器处理其他呼叫事件的压力。



技术实现要素:

本发明要解决的技术问题,在于提供一种基于TCP实现话单下载的方法,在CSTA规定的接口上进行拓展,将原先的话单作为SIP(Session Initiation Protocol,会话初始协议)报文负载的方式改为话单作为TCP负载的方式,原有接口与新增接口可以同时使用,一起实现客户端的认证和保活,达到减少SIP报文的交互,减轻由于话单频繁传送给其他呼叫事件带来的压力。

本发明是这样实现的:

一种基于TCP实现话单下载的方法,包括如下步骤:

步骤1、服务器启动后,创建一个新的线程,并在该线程中创建一个socket,用于监听TCP连接;

步骤2、客户端通过SIP报文向服务器发送请求命令进行认证,认证通过之后调用话单开始传送接口向服务器发起话单订阅请求,同时在该话单开始传送接口中确定话单的传输方式;

步骤3、服务器收到该话单订阅请求后,随机生成一个话单传送标识,并将该话单传送标识和TCP连接的地址及端口作为SIP报文的负载发送给客户端;

步骤4、客户端收到该SIP报文的负载后,根据获取的所述TCP连接的地址及端口向服务器发起TCP连接请求,所述socket监听到所述TCP连接请求后,通过服务器的TCP通道建立服务器与客户端之间的连接,客户端将该话单传送标识发送给服务器进行认证,服务器的TCP通道接收到该话单传送标识后,判断该话单传送标识是否正确,如果正确,则发送认证成功的报文给客户端,并创建定时器定时向客户端发送保活报文以确保TCP通道一直可用;否则,发送认证失败的报文给客户端,并关闭该TCP通道;

步骤5、服务器产生话单后,判断话单的传输方式,根据话单的传输方式将话单转换成对应的格式,再发送给客户端;

步骤6、当客户端调用话单订阅停止接口以停止话单订阅时,服务器根据所述话单传送标识查找到对应的TCP通道,将该TCP通道关闭。

进一步地,所述步骤2具体为:

客户端通过SIP报文发送登录请求命令到服务器进行登录,服务器接收到该登录请求命令后,返回请求认证命令给客户端,客户端接收到该请求认证命令后,通过已知的用户名和密码向服务器发起认证,若认证通过,则调用话单开始传送接口向服务器发起话单订阅请求,同时在该话单开始传送接口中确定话单的传输方式;若认证不通过,则重新向服务器发起认证。

进一步地,所述话单的传输方式为使用SIP信令的方式传送话单或使用TCP负载的方式传送话单。

进一步地,所述步骤5具体为:

服务器产生话单后,判断话单的传输方式,若使用SIP信令的方式传送话单,则使用CSTA的标准接口规范将话单组织成xml格式,并使用SIP INFO报文将话单发送给客户端;若使用TCP负载的方式传送话单,则使用CSTA的标准接口规范将话单组织成csv格式压入待发送队列中,找到客户端对应的TCP通道,当TCP通道的socket空闲时,从待发送队列中取出将要发送的话单,并作为TCP的负载发送到客户端;如果TCP连接断开,则话单发送中断,客户端再次连接TCP通道并认证通过后进行话单传送。

本发明具有如下优点:本发明中在使用TCP话单传送技术之后,能够有效缓解大量话单传送所带来的压力,充分利用服务器和客户端的多线程处理能力,使话单传送和呼叫事件传送分通道进行,保证了两条通道传送的可靠性,数据包不积压,不丢失。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明一种基于TCP实现话单下载的方法执行流程图。

具体实施方式

为了更清楚地说明本发明的技术方案,下面将以一个实例对附图作简单地介绍。对于本领域普通技术人员来讲,本发明不仅仅局限于话单下载,它核心的地方在于通过多线程的协作既保证了下载话单的安全性,也保证了在大批量呼叫时服务器能够有条不紊的进行事件传送,而不是事件积压导致客户端不能收到正常的呼叫事件。

本实例所采用的TCP话单下载方式如附图1所示,本发明的一种基于TCP实现话单下载的方法,包括如下步骤:

步骤1、服务器启动后,加载SIP协议(会话发起协议)栈,服务器创建一个新的线程,并在该线程中创建一个socket,用于监听客户端的连接,打开socket等待客户端的TCP连接;

步骤2、客户端使用SIP协议通过SIP报文发送登录请求命令到服务器进行登录,服务器接收到该登录请求命令后,返回请求认证命令给客户端,客户端接收到该请求认证命令后,通过已知的用户名和密码向服务器发起认证,若认证通过,则服务器为客户端创建一个专门的SIP会话session,后续的SIP报文都在这个SIP会话session中进行,然后调用话单开始传送接口向服务器发起话单订阅请求,同时在该话单开始传送接口中通过字段transferType指定话单的传输方式,所述话单的传输方式为使用SIP信令的方式传送话单或使用TCP负载的方式传送话单,若transferType的取值为xmlOversip,则话单的传输方式为使用SIP信令的方式传送话单;若transferType的取值为csvOverTcp,则话单的传输方式为使用TCP负载的方式传送话单;若认证不通过,则重新向服务器发起认证;

步骤3、服务器收到该话单订阅请求后,随机生成一个字符串作为话单传送标识,并指明这个字符串为cdr的传送标识,后续的发送与停止传送都需要用到该话单传送标识进行认证;并将该话单传送标识和TCP连接的地址及端口作为SIP报文的负载发送给客户端;

步骤4、客户端收到该SIP报文的负载后,根据获取的所述TCP连接的地址及端口向服务器发起TCP连接请求,所述socket监听到所述TCP连接请求后,通过服务器的TCP通道建立服务器与客户端之间的连接,客户端将该话单传送标识作为TCP的负载发送给服务器进行认证,服务器的TCP通道接收到该话单传送标识后,判断该话单传送标识是否正确,如果正确,则发送认证成功的报文给客户端,并创建定时器定时向客户端发送保活报文以确保TCP通道一直可用;否则,发送认证失败的报文给客户端,并关闭该TCP通道;

步骤5、服务器产生话单后,判断话单的传输方式,根据话单的传输方式将话单转换成对应的格式,若transferType的取值为xmlOversip,即使用SIP信令的方式传送话单,则使用CSTA的标准接口规范将话单组织成xml格式,并使用SIP INFO报文将话单发送给客户端;若transferType的取值为csvOverTcp,即使用TCP负载的方式传送话单,则使用CSTA的标准接口规范将话单组织成csv格式压入待发送队列中,找到客户端对应的TCP通道,当TCP通道的socket空闲时,从待发送队列中取出将要发送的话单,并作为TCP的负载发送到客户端;如果TCP连接断开,则话单发送中断,客户端再次连接TCP通道并认证通过后进行话单传送。

步骤6、当客户端调用话单订阅停止接口以停止话单订阅时,服务器根据所述话单传送标识查找到对应的TCP通道,关闭该TCP通道,并释放SIP会话session,断开与客户端的连接。

本发明的优点如下:

在使用CSTA标准接口进行话单传送时,如果同时间存在大批量的呼叫时,服务器短时间内发送大量的话单,势必加重服务器的压力,同时客户端的SIP协议栈也会因为话单处理延时会不能及回复导致服务器话单积压,这样不仅会使服务器压力过大,也会导致一些重要话单丢失。

在使用TCP话单传送技术之后,能够有效缓解大量话单传送所带来的压力,充分利用服务器和客户端的多线程处理能力,使话单传送和呼叫事件传送分通道进行,保证了两条通道传送的可靠性,数据包不积压,不丢失。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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