一种实现群组聊天的方法

文档序号:7618256阅读:161来源:国知局
专利名称:一种实现群组聊天的方法
技术领域
本发明涉及即时通信技术,特别是涉及一种在即时通信业务中实现群组聊天的方法。
背景技术
计算机网络通信作为一种先进的通信方式,正逐渐改变人们的生活,而建立在计算机网络通信基础上的即时通信,凭借其自身方便、快捷和低成本等特点,日益受到人们的关注和认同。目前即时通信领域有两个较为突出的发展趋势其一,从以往一对一通信衍生出来一对多和多对多的通信方式;其二,在以往单纯的文字聊天中加入语音聊天。所以,综合这两个趋势的文字和语音相结合的群组聊天方式成为目前即时通信技术发展领域的一个热点问题。尤其是对于一家公司或机构来说,集体中各成员通过计算机网络进行群组聊天,可以节省开会或日常交流所需的时间和空间。
现有技术中实现群组聊天的常用方式有两种,一种是采用传统的点对点(P2P,Peer to Peer)的方式实现,另一种是通过服务器转发的方式实现。
先介绍以P2P方式实现群组聊天的方法,图1是以P2P方式实现群组聊天的结构示意图,从图1可见,假设当前聊天群组有四个成员A、B、C和D,这四个成员两两建立P2P连接,即A和B之间、B和C之间、C和D之间、D和A之间分别建立P2P连接。当成员A发言时,需要通过P2P连接将发言的内容逐一发送至成员B、C和D,即同时进行三次P2P数据的发送。
这种方式的局限性显而易见,因为在群组聊天的过程中,每个成员总是轮流充当发言方和接听方,这就要求群组中的每个成员与其它成员之间必须保持P2P连接状态,任一个P2P连接出现故障,都会影响通信效果。在实际应用中,如果参与聊天的群组成员增多,各成员所需的P2P连接也将增多,这样,某些网络情况不佳的成员很可能出现带宽不够用的情况,从而降低群组聊天的成功率。
再介绍以服务器转发的方式实现群组聊天的方法,图2是以服务器转发的方式实现群组聊天的结构示意图,从图2可见,仍假设当前聊天群组有四个成员A、B、C和D,这四个成员之间不建立直接连接,而都是与提供即时通信服务的中心服务器建立连接,当成员A发言时,将数据和群组成员列表发送至服务器,中心服务器将数据分发至列表中的成员B、C和D,并将分发结果返回至成员A。
这种方式的优点在于,群组聊天成员所需的资源和消耗最低,因为每个成员仅需保持其与中心服务器连通,而无需保持和其它成员的连通。但是,这种方式的缺陷也是明显的,中心服务器不仅承担文字数据的分发工作,也承担语音数据的分发工作,其中语音数据的分发将加重中心服务器的负担。而且,通常中心服务器需要承担多个聊天群组的语音数据分发工作,所以,中心服务器所需的资源和消耗大大增加,从而对机器配置的要求也大大增加,当中心服务器的资源消耗达到一定程度,也会降低群组聊天的成功率。

发明内容
本发明的主要目的在于提供一种实现群组聊天的方法,降低群组聊天对网络带宽和机器配置的需求。
本发明的目的是通过如下技术方案实现的一种实现群组聊天的方法,包括A、形成一个聊天群组,群组成员包括一个第一成员和除第一成员以外的第二成员;B、第一成员建立与每个第二成员的点对点连接;C、第一成员接收第二成员通过点对点连接上传的语音数据,对自身的语音数据和接收到的语音数据进行混音,生成混音数据,并将混音数据通过点对点连接发送至第二成员;D、第二成员接听混音数据。
在上述步骤A中,所述第一成员是群组聊天的发起方或者其指定的一个群组成员。
在上述步骤A中,所述群组聊天的发起方指定一个群组成员为第一成员的方法包括群组聊天的发起方发送包含预制的群组成员列表的指定请求至一个群组成员,在接收到该群组成员的指定响应之后,将该群组成员作为第一成员,在上述步骤B中,第一成员建立与所述群组成员列表中除其自身以外其它成员的点对点连接。
在上述步骤C中,所述第一成员生成和发送混音数据的具体步骤为第一成员对于群组中的每个第二成员,将除该第二成员之外所有第二成员和自身的语音数据进行混音,生成混音数据,并将混音数据发送至该第二成员。
在上述步骤C中,所述第一成员生成混音数据之后,发送混音数据之前,进一步包括第一成员对混音数据进行压缩编码,生成压缩后的混音数据;在上述步骤D中,所述第二成员接听混音数据的具体步骤为第二成员对接收到的混音数据进行解压缩,然后收听解压缩后的混音数据。
在上述步骤C中,所述第一成员发送混音数据的具体步骤为第一成员将生成的混音数据实时发送至第二成员;或第一成员将一个设定时间段内生成的混音数据发送至第二成员。
在上述步骤B之后,进一步包括增加成员的步骤第一成员建立与群组成员以外的用户的点对点连接,将该用户增加为群组成员。
在上述步骤B之后,进一步包括删除成员的步骤第一成员释放与一个第二成员的点对点连接,将该第二成员从群组中删除。
在上述步骤B之后,进一步包括成员退出的步骤一个第二成员释放与第一成员的点对点连接,退出群组。
其中,群组成员预先登录提供即时消息业务的中心服务器并保持在线,在上述步骤B之后,进一步包括群组成员通过所述中心服务器进行文字聊天。
其中,所述群组成员进行文字聊天的具体步骤为E1、群组聊天的发起方将预制的群组成员列表发送至所述中心服务器;E2、群组成员中的发言方将文字数据上传至所述中心服务器;E3、所述中心服务器将发言方上传的文字数据转发至所述群组成员列表中除发言方以外的所有成员。
从上述技术方案可以看出,在本发明的方法中,群组聊天的主持人建立与其它每个成员的P2P连接,主持人将自身的和接收到的其它成员通过P2P连接上传的语音数据进行混音,生成混音数据,再将混音数据通过P2P连接发送至其它成员。与现有技术相比,本发明有以下三点优势其一,仅需建立主持人与其它成员之间的P2P连接,而无需使所有成员两两互连,减少了连接个数,降低了群组聊天的网络带宽需求;其二,主持人利用接收到的语音数据和自身语音数据生成混音数据,将混音数据发送至其它成员,大大减少了语音数据转发的数据量,而且主持人仅承担一个群组的语音数据转发工作,所以可以减轻主持人方资源的占用和消耗,同时有效降低网络中的数据流量;其三,将文字聊天与语音聊天区分处理,既可以保证文字聊天的及时性和准确性,也解决了传统语音聊天具有的弊端,使资源得到合理利用。从以上分析可以看出,本发明的方法可以降低群组聊天的网络带宽需求和资源消耗,从而提高群组聊天的成功率。


图1是现有技术以P2P方式实现群组聊天的结构示意图;图2是现有技术以服务器转发的方式实现群组聊天的结构示意图;图3是经过改进的实现群组聊天的结构示意图;图4是根据本发明一个具体实施例的实现群组聊天的流程图。
具体实施例方式
为了使本发明的目的、技术方案和优点更清楚,下面结合附图和具体实施方式
对本发明作进一步描述。
图3是经过改进的实现群组聊天的结构示意图,从图3可见,该结构包括中心服务器E、主持人A和成员B、C和D,主持人A和成员B、C和D分别与中心服务器E相连。主持人A分别通过P2P通道与成员B、C和D直接相连。
基于上述结构,本发明提供了一种实现群组聊天的方法,该方法对群组聊天的文字数据和语音数据分开进行处理。
本发明的方法对于文字数据的处理采用现有技术二的中心服务器转发的方法,这是因为,文字数据的信息量比较小,而且群组成员在需要发言的时候才向中心服务器发送数据包,加之中心服务器已经有比较完善的机制进行文字数据的处理工作,所以在很大程度上保证了群组聊天时文字数据收发的稳定性和准确性。
本发明的方法对于语音数据的处理与现有技术不同,群组聊天的发起人选择一个群组成员作为主持人,主持人分别建立与其它所有成员的P2P连接,一旦连接建立起来,主持人通过P2P连接接收其它所有成员的语音数据,将自己的和其它成员的语音数据进行混音处理,然后将混音后的数据通过P2P连接分发给其它成员。
图4是根据本发明一个具体实施例的实现群组聊天的流程图,在本实施例中,群组所有成员已经登录中心服务器,并保持在线状态,从图4可见,本实施例的流程包括如下步骤步骤401群组聊天的发起人A建立群组成员列表并将该列表提交至中心服务器E,列表中包含成员A、B、C和D,发起人A将自身作为群组聊天的主持人。
步骤402主持人A分别发起建立与其它成员B、C和D之间的P2P连接,即建立A和B之间、A和C之间、A和D之间的P2P连接,并在连接请求中发送群组聊天邀请。
步骤403群组成员确定输入的数据为文字数据,则该成员为发言方,发言方将文字数据上传至中心服务器E。
步骤404中心服务器E接收发言方的文字数据,将该文字数据转发至群组成员列表中除发言方之外的所有成员。
步骤405除发言方以外的所有成员接收发言方的文字数据。
步骤406一旦P2P连接建立,主持人A实时接收各P2P连接上传的语音数据,即实时接收来自成员B、C和D的三路语音数据。
和文字数据不同,无论群组成员是否讲话,都产生语音数据,除主持人以外的其它成员向主持人上传语音数据,如果其它成员未讲话,上传的语音数据为静默语音帧,同样,如果主持人未讲话,其产生的语音数据也为静默语音帧。
步骤407主持人A对于群组中其它每一成员,生成并保存一个混音数据,该混音数据是主持人A将除该每一成员之外所有成员的语音数据进行混音而成的,在本实施例中,主持人A生成并保存三个混音数据主持人A为成员B生成并保存混音数据1,混音数据1是主持人A将成员C、D发来的语音数据和自己的语音数据进行混音而成的;主持人A为成员C生成并保存混音数据2,混音数据2是主持人A将成员B、D发来的语音数据和自己的语音数据进行混音而成的;主持人A为成员D生成并保存混音数据3,混音数据3是成员A将成员B、C发来的语音数据和自己的语音数据进行混音而成的,主持人A可以将混音数据保存在其能够访问的任何存储空间,优选地,主持人A将混音数据保存在其缓存区中。
步骤408主持人A将产生的混音数据通过P2P连接实时发送至其它群组成员,在本实施例中,主持人A将混音数据1发送至成员B;将混音数据2发送至成员C;将混音数据3发送至成员D。
步骤409成员B、C和D接收并播放主持人A通过P2P连接发来的混音数据。
步骤410在群组聊天结束之后,主持人A分别释放与成员B、C和D之间的P2P连接,同时发送聊天结束消息至中心服务器E。
步骤411中心服务器E删除保存的聊天群组成员列表。
至此,群组成员A、B、C和D完成了一次群组聊天。
需要注意的是,上述步骤403至405是对群组聊天的文字数据的处理过程,步骤406至409是对群组聊天的语音数据的处理过程,这两个处理过程在时间上无先后顺序,是两个并行的处理过程。
在步骤401中,群组聊天的发起人将自己作为主持人,发起建立对其它群组成员的P2P连接,在本发明的其它实施例中,可以由群组聊天的发起人指定其它群组成员作为主持人。这是因为,在本发明的方法中,对主持人的机器配置和网络带宽的要求相对较高,所以,在发起人的条件无法满足上述要求时,需要指定其它群组成员充当主持人,只要其指定的群组成员的机器配置和网络环境能够达到要求,就可以成功地进行群组聊天。
在发起人指定其它成员为主持人时,步骤401分为以下两个子步骤步骤4011群组聊天的发起人建立群组成员列表并将该列表保存在中心服务器E上,同时通过中心服务器E向其指定的成员发送指定请求,指定请求中包含群组成员列表;步骤4012接收到指定请求的成员如果接受发起人的指定,则向发起人返回指定响应,然后根据接收到的群组成员列表发起建立对其它成员的P2P连接。
从步骤407和408可见,本实施例的主持人生成和发送混音数据的原理是主持人将除某一成员之外所有成员的语音数据进行混音,将混音数据发送给该成员,也就是说,主持人为其它每个成员生成并发送混音数据。这样一来,群组中的每个成员可以听见除自己以外的其它所有成员的声音。在本发明的其它实施例中,为了简化混音步骤,主持人也可以将所有成员的声音混音,对其它所有成员生成一个混音数据,将这一个混音数据分别发送至其它成员,这样,每个成员也听得见自己的声音,所以群组语音通话的效果稍差,但实施起来比较简单。
在步骤407中,主持人将多路语音数据混音之后,生成混音数据并保存。在本发明的其它实施例中,主持人将多路语音数据混音之后,进行压缩编码,然后在步骤408中,发送压缩后的混音数据,在步骤409,接收到混音数据的成员对压缩后的混音数据进行解压缩,这样,就可以有效地减少群组聊天中的语音数据的数据量。
在步骤407和408中,主持人将生成的混音数据实时发送给群组其它成员。在本发明的其它实施例中,主持人可以分段发送混音数据,即设置一个时间段,将一个时间段之内生成的混音数据发送给群组其它成员。
为了实现分段发送混音数据的目的,主持人预先为其它每个群组成员分配一个存储空间,在生成混音数据的同时将混音数据保存在预先分配的存储空间内,举例来说,如果设置的时间段为5秒,那么主持人将为其它每个成员生成的混音数据保存在预先为每个成员分配的存储空间中,5秒钟过后,从对应存储空间取出5秒的混音数据,发送至其它每个成员。
在上述实施例中,发起人在群组聊天开始时建立群组成员列表,群组聊天在这些成员之间进行。在本发明的其它实施例中,主持人在群组聊天的过程中,可以增加或删除参与群组聊天的成员。主持人建立与待增加的成员的P2P连接,并向中心服务器请求在群组成员列表中增加该成员,即可实现将该成员加入群组的目的。同样,主持人释放与待删除成员的P2P连接,并向中心服务器请求在群组成员列表中删除该成员,即可实现从群组中删除该成员的目的。另外,如果群组中除主持人以外的其它成员主动退出群组,可以释放其与主持人的P2P连接,主持人向中心服务器请求在群组成员列表中删除该成员。
从上述技术方案可以看出,本发明的方法分别针对现有技术一和现有技术二在语音聊天方面作了改进,在下文分别进行介绍。
对于现有技术一,聊天群组中的所有成员两两之间建立P2P连接,这样,如果群组成员个数为N,则需要建立 个P2P连接,而在本发明的方法中,仅需建立主持人和其它所有成员之间的P2P连接,这样,如果有N个成员,仅需建立(N-1)个P2P连接即可,并且和现有技术一相比,本发明的方法仅对主持人的机器配置和网络环境有较高要求,对其它成员的机器配置和网络环境无特殊要求。从上述对比可以看出,随着N的增加,本发明的方法所需的P2P连接数量大为减少,本发明的优势就越明显,所以说本发明尤其适用于聊天群组成员较多的情况。而且,由于群组成员仅和主持人之间有P2P连接,所以,主持人可以很方便地增加和删除群组成员,同时,群组其它成员也可以很方便地退出群组,这样,可以实现对群组聊天成员的灵活控制。
对于现有技术二,服务器负责转发聊天群组中所有成员的语音数据,这样,随着服务器负责转发数据的聊天群组个数的增加,服务器的负载和网络数据流量也大大增加,而本发明的方法是由聊天群组中的一个成员充当主持人,对接收到的本群组成员的语音数据进行混音后发送给其它成员。举例说明,录制一首3分钟的独唱歌曲和录制一首3分钟的合唱歌曲,所使用的磁带长度是相同的,同理,由于群组成员接收的是经过混音处理后的语音数据,所以无论群组中有多少人在发言,群组成员接收的数据量都是相同的。由于数据量得到控制,也就能够有效地减少网络延迟、阻塞等因素对语音质量的影响。从上述对比可以看出,本发明的方法减轻了中心服务器的负载,同时显著降低了网络数据流量。
本发明的另一个显著优势在于,对群组聊天中的文字数据和语音数据分别进行处理,文字处理依然采用现有技术的方法,语音处理采用本发明提供的改进方法。这样,既可以保证文字聊天的及时性和准确性,也解决了传统语音聊天具有的对网络带宽和机器配置要求高的弊端,同时降低了网络数据流量,使资源得到合理利用。
在具体的实施过程中可对根据本发明的方法进行适当的改进,以适应具体情况的具体需要。因此可以理解,根据本发明的具体实施方式
只是起示范作用,并不用以限制本发明的保护范围。
权利要求
1.一种实现群组聊天的方法,其特征在于,其包括A、形成一个聊天群组,群组成员包括一个第一成员和除第一成员以外的第二成员;B、第一成员建立与每个第二成员的点对点连接;C、第一成员接收第二成员通过点对点连接上传的语音数据,对自身的语音数据和接收到的语音数据进行混音,生成混音数据,并将混音数据通过点对点连接发送至第二成员;D、第二成员接听混音数据。
2.根据权利要求1所述的方法,其特征在于,在步骤A中,所述第一成员是群组聊天的发起方或者其指定的一个群组成员。
3.根据权利要求2所述的方法,其特征在于,在步骤A中,所述群组聊天的发起方指定一个群组成员为第一成员的方法包括群组聊天的发起方发送包含预制的群组成员列表的指定请求至一个群组成员,在接收到该群组成员的指定响应之后,将该群组成员作为第一成员,在步骤B中,第一成员建立与所述群组成员列表中除其自身以外其它成员的点对点连接。
4.根据权利要求1所述的方法,其特征在于,在步骤C中,所述第一成员生成和发送混音数据的具体步骤为第一成员对于群组中的每个第二成员,将除该第二成员之外所有第二成员和自身的语音数据进行混音,生成混音数据,并将混音数据发送至该第二成员。
5.根据权利要求4所述的方法,其特征在于,在步骤C中,所述第一成员生成混音数据之后,发送混音数据之前,进一步包括第一成员对混音数据进行压缩编码,生成压缩后的混音数据;在步骤D中,所述第二成员接听混音数据的具体步骤为第二成员对接收到的混音数据进行解压缩,然后收听解压缩后的混音数据。
6.根据权利要求1所述的方法,其特征在于,在步骤C中,所述第一成员发送混音数据的具体步骤为第一成员将生成的混音数据实时发送至第二成员;或第一成员将一个设定时间段内生成的混音数据发送至第二成员。
7.根据权利要求1所述的方法,其特征在于,在步骤B之后,进一步包括增加成员的步骤第一成员建立与群组成员以外的用户的点对点连接,将该用户增加为群组成员。
8.根据权利要求1所述的方法,其特征在于,在步骤B之后,进一步包括删除成员的步骤第一成员释放与一个第二成员的点对点连接,将该第二成员从群组中删除。
9.根据权利要求1所述的方法,其特征在于,在步骤B之后,进一步包括成员退出的步骤一个第二成员释放与第一成员的点对点连接,退出群组。
10.根据权利要求1至9中任一项所述的方法,其特征在于,群组成员预先登录提供即时消息业务的中心服务器并保持在线,在步骤B之后,进一步包括群组成员通过所述中心服务器进行文字聊天。
11.根据权利要求10所述的方法,其特征在于,所述群组成员进行文字聊天的具体步骤为E1、群组聊天的发起方将预制的群组成员列表发送至所述中心服务器;E2、群组成员中的发言方将文字数据上传至所述中心服务器;E3、所述中心服务器将发言方上传的文字数据转发至所述群组成员列表中除发言方以外的所有成员。
全文摘要
本发明公开了一种实现群组聊天的方法,该方法是形成一个聊天群组,群组成员包括一个第一成员和除第一成员以外的第二成员;第一成员建立与每个第二成员的点对点连接;第一成员接收第二成员通过点对点连接上传的语音数据,对自身的语音数据和接收到的语音数据进行混音,生成混音数据,并将混音数据通过点对点连接发送至第二成员;第二成员接听混音数据。本发明的方法对文字聊天与语音聊天进行区分处理,降低了群组聊天对网络带宽和转发语音数据的机器的配置需求,降低了网络传输的数据量,同时保证了资源的合理利用。
文档编号H04L12/18GK1859144SQ200510070359
公开日2006年11月8日 申请日期2005年4月30日 优先权日2005年4月30日
发明者秦鹏程, 林友尧, 范质彬 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1