发明内容
本发明提供两种建立聊天室数据传输通道实现聊天消息传送的方法,应用于采用SIP/SIMPLE协议的即时消息系统,使用户加入聊天室后,能和聊天室其它用户进行信息交互。
本发明方法应用于采用SIP/SIMPLE的即时消息系统,本发明方法之一包括:当用户客户端发起加入聊天室请求或用户客户端发起接受邀请响应后,执行下列步骤:
聊天室服务器与用户客户端所属IM服务器通过协商建立第一数据传输通道;
用户客户端所属IM服务器与用户客户端通过协商建立第二数据传输通道;
用户客户端与聊天室服务器通过所述第一数据传输通道和第二数据传输通道进行聊天消息传送。
根据本发明的上述方法,所述第一数据传输通道协商过程包括:
A1、所述IM服务器收到所述用户客户端的加入请求消息SIP INVITE或接受邀请响应消息SIP REFER后,发起请求给所述聊天室服务器,并且在请求中包含该IM服务器的传输能力和协商参数信息;
B1、所述聊天室服务器收到请求并对用户鉴权通过后,回送响应消息给所述IM服务器,并且在响应消息中包含该聊天室服务器的传输能力和协商参数信息;
所述第二数据传输通道协商过程包括:
A2、在所述第一数据传输通道建立前,所述用户客户端发送加入请求或接受邀请响应给所述IM服务器,并且在请求或响应消息中包含该用户客户端的传输能力和协商参数信息;
B2、在所述第一数据传输通道建立后,所述IM服务器发送消息给所述用户客户端,并且在消息中包含该IM服务器的传输能力和协商参数信息。
根据本发明的上述方法,步骤A1中,所述IM服务器发送所述SIP INVITE消息或SIP REFER消息给所述聊天室服务器,并通过SIP INVITE消息或SIPREFER消息中的会话描述协议(SDP)参数携带自身的传输能力和协商参数;
步骤A2中,所述用户客户端发送SIP INVITE消息或SIP REFER消息给所述IM服务器,并通过SIP INVITE消息或SIP REFER消息中的SDP参数携带自身的传输能力和协商参数。
根据本发明的上述方法,步骤B1中,所述聊天室服务器发送SIP 200 OK响应消息给所述IM服务器,并在SDP参数中携带自身的传输能力和协商参数;
步骤B2中,所述IM服务器发送SIP 200 OK消息给所述用户客户端,并在SDP参数中携带自身的传输能力和协商参数。
根据本发明的上述方法,在所述第二数据传输通道协商完成之后,用户客户端向其所属IM服务器发送ACK确认消息,所属IM服务器向聊天室服务器发送ACK确认消息。
根据本发明的上述方法,用户客户端和其所属IM服务器之间的消息由该客户端所属核心网转发。
根据本发明的上述方法,若客户端所属IM服务器和聊天室服务器分属不同的核心网,则:客户端所属IM服务器发送到聊天室服务器的消息依次由该客户端所属核心网和该聊天室服务器所属核心网转发;
聊天室服务器返回给客户端所属IM服务器的消息依次由该聊天室服务器所属核心网和该客户端所属核心网转发;
若客户端所属IM服务器和聊天室服务器同属一个核心网,则:客户端所属IM服务器与聊天室服务器之间的消息传递由同属的核心网转发。
根据本发明的上述方法,所述第一数据传输通道和所述第二数据传输通道为消息会话中继协议(MSRP)通道。
根据本发明的上述方法,用户客户端通过MSRP SEND消息携带聊天内容,由所述第二数据传输通道经该客户端所属IM服务器中继转发到所述第一数据传输通道,发送给聊天室服务器;
聊天室服务器通过MSRP SEND消息携带聊天内容,由所述第一数据传输通道经该客户端所属IM服务器中继转发到所述第二数据传输通道,发送给客户端。
本发明方法之二包括:当用户客户端发起加入聊天室请求或用户客户端发起接受邀请响应后,执行下列步骤:
用户客户端经自身所属IM服务器与聊天室服务器协商;
通过所述协商建立用户客户端与聊天室服务器间直接的传输通道;
用户客户端与聊天室服务器通过所述建立的传输通道进行聊天内容传送。
根据本发明的上述方法,所述用户客户端经自身所属IM服务器与聊天室服务器协商具体包括:
A3、用户客户端发送加入请求或接受邀请响应给所属IM服务器,由该IM服务器转发给聊天室服务器,并在消息中包含该用户客户端的传输能力和协商参数;
B3、聊天室服务器收到消息并对该用户鉴权通过后,回送响应消息给客户端所属IM服务器,并由该IM服务器转发给用户客户端,并在响应消息中包含该聊天室服务器的传输能力和协商参数。
根据本发明的上述方法,步骤A3中,用户客户端发送SIP INVITE消息或SIP REFER消息经所属IM服务器给聊天室服务器,并通过SIP INVITE消息或SIP REFER消息中的SDP参数携带自身的传输能力和协商参数。
根据本发明的上述方法,步骤B3中,聊天室服务器返回SIP 200 OK响应消息经客户端所属IM服务器给客户端,并通过SIP 200 OK响应消息中的SDP参数携带给聊天室服务器的传输能力和协商参数。
根据本发明的上述方法,在所述传输通道协商完成之后,用户客户端经其所属IM服务器向聊天室服务器发送ACK确认消息。
根据本发明的上述方法,用户客户端和其所属IM服务器之间的消息由该客户端所属核心网转发。
根据本发明的上述方法,若客户端所属IM服务器和所述聊天室服务器分属不同的核心网,则:
客户端所属IM服务器发送到聊天室服务器的消息依次由该客户端所属核心网和该聊天室服务器所属核心网转发;
聊天室服务器返回给客户端所属IM服务器的消息依次由该聊天室服务器所属核心网和该客户端所属核心网转发;
若客户端所属IM服务器和聊天室服务器同属一个核心网,则:客户端所属IM服务器与聊天室服务器之间的消息传递由同属的核心网转发。
根据本发明的上述方法,所述传输通道为MSRP通道。
根据本发明的上述方法,用户客户端与聊天室服务器通过在所述MSRP通道发送MSRP SEND消息进行信息交互。
本发明的有益效果如下:
本发明的技术方法能够支持SIP/SIMPLE IM用户加入聊天室,并获取发送消息到聊天室服务器的数据传输通道,该传输通道可以是从用户客户端到所属IM服务器,再从该IM服务器到聊天室服务器的两个独立的MSRP传输通道;也可以是从客户端直接到聊天室服务器的MSRP传输通道,使得新加入用户的聊天消息内容能够通过聊天室服务器分发到其他的已经加入聊天室的用户,从而为SIP/SIMPLE IM业务系统中聊天室业务提供了完整的解决方案。
具体实施方式
在SIP/SIMPLE的聊天室系统中,所有聊天室成员的消息都是首先发送到聊天室服务器,然后再由聊天室服务器分发消息到其他的聊天室成员。因此新加入聊天室用户需要建立起能够和聊天室服务器进行数据传输的通道实现聊天消息传送。
本发明提供如下两种建立聊天室数据传输通道实现聊天消息传送的方法。
本发明提供的第一实施例,如图1所示,各实体含义说明如下:
客户端A和客户端B分别表示欲加入SIMPLE IM聊天室系统的两个用户所在的客户端;聊天室服务器表示聊天室系统所在的SIMPLE IM服务器,该聊天室服务器具有聊天室控制功能;IM服务器A表示客户端A所归属的SIMPLE IM服务器,该IM服务器具有聊天室参与功能;IM服务器B表示客户端B所归属的SIMPLE IM服务器,该IM服务器具有聊天室参与功能。客户端A和聊天室服务器分别归属于两个不同的归属网络,客户端B和聊天室服务器归属于同一个归属网络;聊天室服务器和IM服务器B是两个逻辑实体,可以是位于同一个物理实体,也可以是分别为两个不同的物理实体。
上述第一实施例的具体业务流程包括:
1、用户A需要加入聊天室,则通过该用户客户端A给其归属的IM服务器A发送加入聊天室请求消息;
2、IM服务器A收到请求消息后,转发该请求消息到聊天室服务器;
3、聊天室服务器对用户A进行鉴权,若鉴权通过则允许A加入聊天室(鉴权不通过则不允许A加入,此种情况在此不考虑);
4、客户端A和IM服务器A通过初始会话协议(SIP)/会话描述协议(SDP)信令协商建立起MSRP(Message Session Relay Protocol;消息会话中继协议)传输通道,这样客户端A和IM服务器A之间可以基于协商过的端口号、媒介传输类型等信息进行直接的数据传输;
IM服务器A和聊天室服务器通过SIP/SDP信令协商建立起MSRP传输通道,这样IM服务器A和聊天室服务器之间可以基于协商过的端口号、媒介传输类型等信息进行直接的数据传输;
5、用户A发送到聊天室服务器的消息以如下方式传输:
首先,用户A通过MSRP SEND信令发送聊天消息内容到IM服务器A;
然后,IM服务器A通过MSRP SEND转发用户A的消息内容到聊天室服务器,这时IM服务器A相当于作了MSRP中转。
6、聊天室服务器再将用户A的消息分发到已经处于聊天室内的其他用户,分发的数据传输通道可以复用聊天室服务器和这些已经处于聊天室内的其他用户的现有数据传输通道(未在图中标识出)。
同理,如果用户B也想加入聊天室,那么也需要在IM服务器B和聊天室之间、IM服务器B和客户端B之间分别建立起独立的MSRP通道;用户B发送到聊天室服务器的消息以如下方式传输:
首先,用户B通过MSRP SEND信令发送聊天消息内容到IM服务器B;
然后,IM服务器B通过MSRP SEND转发用户B的消息内容到聊天室服务器,这时IM服务器B相当于作了MSRP中转;聊天室服务器再将用户B的消息分发到聊天室内的其他用户。
上述第一实施例的具体信令流程如图2所示,包括:
1、聊天室服务器上已经有一激活的聊天室会话;
2、SIP/SIMPLE IM客户端A接收到用户A主动请求加入聊天室会话的请求,于是向SIP核心网A发送SIP INVITE请求(如果用户A被邀请加入聊天室,则向SIP核心网A发送SIP REFER请求,本实施例以用户主动加入聊天室为例进行说明),其中SIP INVITE请求在Request-URI(请求的统一资源标识地址)中包含了聊天室标识,在SDP参数中携带客户端A的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
3、核心网A发送SIP 100 trying响应给客户端A,表示已经收到该请求消息;
4、核心网A转发步骤2所述的SIP INVITE请求到IM服务器A;
5、IM服务器A发送SIP 100 trying响应给核心网A,表示已经收到SIPINVITE请求消息;
6、IM服务器A读取步骤4收到的SIP INVITE中携带的聊天室标识信息,判断该聊天室是网络B所属,于是发起一个新的SIP INVITE请求到核心网A。该新的SIP INVITE请求在Request-URI中包含了聊天室标识,在SDP参数中携带IM服务器A的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
7、核心网A发送SIP 100 trying响应给IM服务器A,表示已经收到该INVITE请求消息(步骤6所述的SIP INVITE);
8、核心网A转发步骤6所述的SIP INVITE请求到核心网B;
9、核心网B发送SIP 100 trying响应给核心网A,表示已经收到该INVITE请求消息;
10、核心网B转发步骤6所述的SIP INVITE请求到聊天室服务器;
11、聊天室服务器发送SIP 100 trying响应给核心网B,表示已经收到该INVITE请求消息;
12、聊天室服务器对客户端A进行鉴权,若鉴权通过则允许用户A加入聊天室(鉴权不通过则业务流程结束),发送SIP 200 OK响应给核心网B;在此SIP 200 OK响应中,其中的SDP参数中携带聊天室服务器的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
13、核心网B转发步骤12所述的SIP 200 OK响应给核心网A;
14、核心网A转发步骤12所述的SIP 200 OK响应给IM服务器A;
上述步骤6-14,完成了用户A的归属IM服务器(IM服务器A)和聊天室服务器之间的MSRP通道建立协商过程。
15、IM服务器A发送一个新的SIP 200 OK给核心网A,其中的SDP参数中携带IM服务器A的可被客户端A所用的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
16、核心网A转发步骤15所述的SIP 200 OK响应给客户端A;
至此,完成了客户端A和用户A的归属IM服务器(IM服务器A)之间的MSRP通道建立协商过程。
17、客户端A发送SIP ACK确认消息到核心网A,表示确认收到了步骤16中的SIP 200 OK;
18、核心网A转发步骤17中的SIP ACK给IM服务器A;
19、IM服务器A发送SIP ACK确认消息到核心网A,表示确认收到了步骤14中的SIP 200 OK;
20、核心网A转发步骤19中的SIP ACK给核心网B;
21、核心网B转发步骤19中的SIP ACK给聊天室服务器。
此时,客户端A已可以发送聊天消息,系统中有2个步骤:
首先,用户A使用MSRP SEND信令发送聊天消息内容到IM服务器A;
然后,IM服务器A使用MSRP SEND信令转发用户A的消息内容到聊天室服务器,这时IM服务器A相当于作了MSRP中转;聊天室服务器再将用户A的消息分发到聊天室内的其他用户。
同样的,其他用户发给用户A的消息,通过聊天室服务器经过MSRP通道到IM服务器A,再从IM服务器A经过MSRP通道发到客户端A。
22、同理,如果用户B也想加入聊天室,那么也需要在IM服务器B和聊天室服务器之间、IM服务器B和客户端B之间分别建立起独立的MSRP通道。信令流程与上述类似,由于客户端B和聊天室服务器处于同一个归属网络,则信令流程中少了核心网B与核心网A之间的转发过程,其余均与上述步骤2-21类似。
此时,客户端B已可以发送聊天消息,系统中有2个步骤:
首先,用户B使用MSRP SEND信令发送聊天消息内容到IM服务器B;
然后,IM服务器B使用MSRP SEND信令转发用户B的消息内容到聊天室服务器,这时IM服务器B相当于作了MSRP中转;聊天室服务器再将用户B的消息分发到聊天室内的其他用户。
同样的,其他用户发给用户B的消息,通过聊天室服务器经过MSRP通道到IM服务器A,再从IM服务器B经过MSRP通道发到客户端B。
本发明还提供了第二实施例,如图3所示,各实体含义说明如下:
客户端A和客户端B分别表示欲加入SIMPLE IM聊天室系统的2个用户所在的客户端;聊天室服务器表示聊天室系统所在的SIMPLE IM服务器,该聊天室服务器具有聊天室控制功能;IM服务器A表示客户端A所归属的SIMPLE IM服务器,该IM服务器具有聊天室参与功能;IM服务器B表示客户端B所归属的SIMPLE IM服务器,该IM服务器具有聊天室参与功能。客户端A和聊天室服务器分别归属于两个不同的归属网络,客户端B和聊天室服务器归属于同一个归属网络;聊天室服务器和IM服务器B是2个逻辑实体,可以是位于同一个物理实体,也可以是分别为两个不同的物理实体。
上述第二实施例的具体业务流程包括:
1、用户A需要加入SIMPLE IM聊天室,则通过该用户客户端A给其归属的SIMPLE IM服务器A发送加入聊天室请求消息;
2、IM服务器A收到请求消息后,转发该请求消息到聊天室服务器;
3、聊天室服务器对用户A进行鉴权,若鉴权通过则允许A加入聊天室(鉴权不通过则不允许A加入,此种情况在此不考虑);
4、客户端A和聊天室服务器通过SIP/SDP信令协商建立起直接的MSRP传输通道,这样客户端A和聊天室服务器之间可以基于协商过的端口号、媒介传输类型等信息进行直接的数据传输;
5、用户A发送到聊天室服务器的消息以如下方式传输:用户A通过MSRPSEND信令发送聊天消息内容直接到聊天室服务器;
6、聊天室服务器再将用户A的消息分发到已经处于聊天室内的其他用户,分发的数据传输通道可以复用聊天室服务器和这些已经处于聊天室内的其他用户的现有数据传输通道(未在图中标识出)。
同理,如果用户B也想加入聊天室,那么也需要在客户端B和聊天室之间建立起直接的MSRP通道;用户B通过MSRP SEND信令发送聊天消息内容直接到聊天室服务器;聊天室服务器再将用户B的消息分发到聊天室内的其他用户。
上述第二实施例的具体信令流程如图4所示,包括:
1、聊天室服务器上已经有一激活的聊天室会话;
2、SIP/SIMPLE IM客户端A接收到用户A请求加入聊天室会话的请求,于是向SIP核心网A发送SIP INVITE请求(如果用户A被邀请加入聊天室,则向SIP核心网A发送SIP REFER请求,本实施例以用户主动加入聊天室为例进行说明),其中SIP INVITE请求在Request-URI中包含了聊天室标识,在SDP参数中携带客户端A的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
3、核心网A发送SIP 100 trying响应给客户端A,表示已经收到该INVITE请求消息;
4、核心网A转发步骤2所述的SIP INVITE请求到IM服务器A;
5、IM服务器A发送SIP 100 trying响应给核心网A,表示已经收到INVITE请求消息;
6、IM服务器A读取步骤4收到的SIP INVITE中携带的聊天室标识信息,判断该聊天室是网络B所属,于是发起一个新的SIP INVITE请求到核心网A。其中SIP INVITE请求在Request-URI中包含了聊天室标识,在SDP参数中携带IM服务器A的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
7、核心网A发送SIP 100 trying响应给客户端A,表示已经收到该INVITE请求消息(步骤6所述的SIP INVITE);
8、核心网A转发步骤2所述的SIP INVITE请求到核心网B;
9、核心网B发送SIP 100 trying响应给核心网A,表示已经收到该INVITE请求消息;
10、核心网B转发步骤2所述的SIP INVITE请求到聊天室服务器;
11、聊天室服务器发送SIP 100 trying响应给核心网B,表示已经收到该INVITE请求消息;
12、聊天室服务器对客户端A进行鉴权,若鉴权通过则允许用户A加入聊天室(鉴权不通过则业务流程结束),发送SIP 200 OK响应给核心网B;在此SIP 200 OK响应中,其中的SDP参数中携带聊天室服务器的传输能力和协商参数,例如IP地址、端口号、支持的传输媒介类型等;
13、核心网B转发步骤12所述的SIP 200 OK响应给核心网A;
14、核心网A转发步骤12所述的SIP 200 OK响应给IM服务器A;
15、IM服务器A转发步骤12所述的SIP 200 OK给核心网A;
16、核心网A转发步骤12所述的SIP 200 OK响应给客户端A;
至此,完成了客户端A和聊天室服务器之间的MSRP通道建立协商过程。
17、客户端A发送SIP ACK确认消息到核心网A,表示确认收到了步骤16中的SIP 200 OK;
18、核心网A转发步骤17中的SIP ACK给IM服务器A;
19、IM服务器A转发步骤17中的SIP ACK确认消息到核心网A;
20、核心网A转发步骤17中的SIP ACK给核心网B;
21、核心网B转发步骤17中的SIP ACK给聊天室服务器。
此时,客户端A已可以发送聊天消息:用户A通过MSRP SEND信令直接发送聊天消息内容到聊天室服务器;聊天室服务器再将用户A的消息分发到聊天室内的其他用户。
同样的,其他用户发给用户A的消息,通过聊天室服务器经过MSRP通道直接发到客户端A。
22、同理,如果用户B也想加入聊天室,那么也需要在IM服务器B和聊天室服务器之间直接建立起独立的MSRP通道。信令流程与上述类似,由于客户端B和聊天室服务器处于同一个归属网络,则信令流程中少了核心网B与核心网A之间的转发过程,其余均与上述步骤2-21类似。
此时,客户端B已可以发送聊天消息:用户B通过MSRP SEND信令直接发送聊天消息内容到聊天室服务器;聊天室服务器再将用户B的消息分发到聊天室内的其他用户。
同样的,其他用户发给用户B的消息,通过聊天室服务器经过MSRP通道直接发到客户端B。
以上两个实施例描述了用户A主动请求加入聊天室的情况下如何建立用户和聊天室服务器直接的传输通道的过程,另外还有一种情形是:用户A受其他用户的邀请或者是服务器的邀请而加入聊天室,同样可以有两种方式:
方式一:客户端A到归属IM服务器A建立传输通道,归属IM服务器A再到聊天室服务器建立传输通道;客户端A与聊天室服务器之间的消息传递由其归属IM服务器A中继转发。
方式二:客户端A直接与聊天室服务器建立传输通道。
由上述描述可以看出,上述两种方案都能使新加入聊天室用户获得MSRP数据传输通道以便发送聊天消息到聊天室服务器,聊天室服务器也可将聊天室中其他用户的消息通过与用户客户端建立起的数据传输通道发送到用户,从而提供了完整的聊天室业务解决方案。
综上所述,第一种方案中建立从聊天室服务器到IM服务器和从IM服务器到客户端的两个独立的MSRP传输通道,在客户端与聊天室服务器之间进行数据传输时,传输通道中的IM服务器作为MSRP中转站,而第二种方案中直接建立从客户端到聊天室的MSRP传输通道,由此可以得出:
在业务控制能力方面,第一种方式更加强大,因为用户归属服务器上存储有用户业务配置信息、用户私有性性能参数、阻塞列表/拒绝列表等,归属服务器可利用这些信息提供更具体的用户个性化控制功能,例如通知新加入聊天室用户是否已存在了位于其阻塞列表的用户、聊天室消息过滤等。
在传输效率方面,第二种方式相对更高些,因为不需要用户归属服务器进行消息的中转,而直接连接到聊天室服务器。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。