发明内容
本发明实施例公开了一种即时通讯IM消息的传输方法及装置、系统,能够提高IM消息的传输可靠性。
本发明实施例第一方面公开了一种即时通讯IM消息的传输方法,所述方法包括:
客户端建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接;
所述客户端从与所述第一接入服务器以及所述第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接;
所述客户端通过当前选择的目标连接发送所述IM消息,并判断在发送所述IM消息后的预设时间段内是否接收到确认消息,所述确认消息用于指示所述IM消息发送成功;
当未接收到所述确认消息时,所述客户端从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接,并执行所述客户端通过当前选择的目标连接发送所述IM消息,并判断在发送所述IM消息后的预设时间段内是否接收到确认消息的操作,直至所述客户端在通过当前选择的目标连接发送所述IM消息后的所述预设时间段内接收到所述确认消息。
在本发明实施例第一方面的第一种可能的实现方式中,所述多条连接中每条连接都存在与之对应的优先级;
所述客户端从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接,包括:
所述客户端判断所述多条连接中是否存在未发送过所述IM消息的连接;
当存在未发送过所述IM消息的连接时,所述客户端从所述多条连接中选择未发送过所述IM消息且优先级最高的连接作为当前发送所述IM消息的目标连接;
当不存在未发送过所述IM消息的连接时,所述客户端从所述多条连接中选择优先级最高的连接作为当前发送所述IM消息的目标连接。
结合本发明实施例第一方面或本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,所述至少两条连接包括传输控制协议TCP连接以及第一用户数据报协议UDP连接,所所述至少一条连接包括第二UDP连接。
结合本发明实施例第一方面,在本发明实施例第一方面的第三种可能的实现方式中,当未接收到所述确认消息时,所述客户端从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接之前,所述方法还包括:
所述客户端判断所述IM消息的发送次数是否小于等于预设次数;
当所述IM消息的发送次数小于等于所述预设次数时,执行所述客户端从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接的操作;
所述方法还包括:
当所述IM消息的发送次数大于所述预设次数时,输出提示消息,所述提示消息用于提示所述IM消息发送失败。
本发明实施例第二方面公开了一种客户端,所述客户端包括建立模块,选择模块、通信模块以及判断模块,其中:
所述建立模块,用于建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接;
所述选择模块,用于从与所述第一接入服务器以及所述第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接;
所述通信模块,用于通过当前选择的目标连接发送所述IM消息;
所述判断模块,用于判断在发送所述IM消息后的预设时间段内所述通信模块是否接收到确认消息,所述确认消息用于指示所述IM消息发送成功;
所述选择模块,还用于当所述判断模块判断出所述通信模块未接收到所述确认消息时,从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接,并触发所述通信模块执行所述通过当前选择的目标连接发送所述IM消息的操作以及所述判断模块执行所述判断在发送所述IM消息后的预设时间段内是否接收到确认消息的操作,直至所述判断模块判断出在通过当前选择的目标连接发送所述IM消息后的所述预设时间段内所述通信模块接收到所述确认消息。
在本发明实施例第二方面的第一种可能的实现方式中,所述多条连接中每条连接都存在与之对应的优先级;
所述选择模块从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接的具体方式为:
判断所述多条连接中是否存在未发送过所述IM消息的连接;
当存在未发送过所述IM消息的连接时,从所述多条连接中选择未发送过所述IM消息且优先级最高的连接作为当前发送所述IM消息的目标连接;
当不存在未发送过所述IM消息的连接时,从所述多条连接中选择优先级最高的连接作为当前发送所述IM消息的目标连接。
结合本发明实施例第二方面或本发明实施例第二方面的第一种可能的实现方式,在本发明实施例第二方面的第二种可能的实现方式中,所述至少两条连接包括TCP连接以及第一UDP连接,所述至少一条连接包括第二UDP连接。
结合本发明实施例第二方面,在本发明实施例第二方面的第三种可能的实现方式中,所述判断模块,还用于在所述选择模块从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接之前,判断所述IM消息的发送次数是否小于等于预设次数,当所述IM消息的发送次数小于等于所述预设次数时,触发所述选择模块执行所述从所述多条连接中选择除所述目标连接之外的一条连接作为当前发送所述IM消息的目标连接的操作;
所述客户端还包括输出模块,其中:
所述输出模块,用于当所述IM消息的发送次数大于所述预设次数时,输出提示消息,所述提示消息用于提示所述IM消息发送失败。
本发明实施例第三方面公开了一种即时通讯IM消息的传输系统,所述系统包括客户端、第一接入服务器、第二接入服务器以及应用服务器,其中:
所述客户端,用于建立与所述第一接入服务器间的至少两条连接以及与所述第二接入服务器间的至少一条连接,从所述至少两条连接以及所述至少一条连接中选择一条连接作为当前发送第一IM消息的目标连接,通过当前选择的所述目标连接向与该目标连接对应的接入服务器发送第一IM消息,并判断在发送所述第一IM消息后的第一预设时间段内是否接收到第一确认消息,若否,则从所述至少两条连接以及所述至少一条连接中选择除所述目标连接之外的一条连接作为当前发送所述第一IM消息的目标连接,执行所述通过当前选择的所述目标连接向与该目标连接对应的接入服务器发送第一IM消息,并判断在发送所述第一IM消息后的第一预设时间段内是否接收到第一确认消息的操作,直至在通过当前选择的目标连接发送所述第一IM消息后的所述第一预设时间段内接收到所述第一确认消息,其中,所述第一确认消息用于指示所述第一IM消息发送成功;
所述第一接入服务器,用于在接收到所述客户端发送的所述第一IM消息时,向所述应用服务器转发所述第一IM消息;
所述第二接入服务器,用于在接收到所述客户端发送的所述第一IM消息时,向所述应用服务器转发所述第一IM消息;
所述应用服务器,用于接收所述目标连接对应的接入服务器发送的所述第一IM消息,并向所述客户端返回所述第一确认消息。
在本发明实施例第三方面的第一种可能的实现方式中,所述应用服务器,还用于从所述第一接入服务器以及所述第二接入服务器中选择一个接入服务器作为当前发送第二IM消息的目标接入服务器,向当前选择的所述目标接入服务器发送所述第二IM消息,并判断在发送所述第二IM消息后的第二预设时间段内是否接收到第二确认消息,若否,则从所述第一接入服务器以及所述第二接入服务器中选择除所述目标接入服务器之外的一个接入服务器作为当前发送所述第二IM消息的目标接入服务器,执行所述向当前选择的所述目标接入服务器发送所述第二IM消息,并判断在发送所述第二IM消息后的第二预设时间段内是否接收到第二确认消息的操作,直至在向当前选择的目标接入服务器发送所述第二IM消息后的所述第二预设时间段内接收到所述第二确认消息,其中,所述第二确认消息用于指示所述第二IM消息发送成功;
所述第一接入服务器,还用于在接收到所述应用服务器发送的所述第二IM消息时,向所述客户端转发所述第二IM消息;
所述第二接入服务器,还用于在接收到所述应用服务器发送的所述第二IM消息时,向所述客户端转发所述第二IM消息;
所述客户端,还用于接收所述目标接入服务器发送的所述第二IM消息,并向所述应用服务器返回所述第二确认消息。
结合本发明实施例第三方面的第一种可能的实现方式中,所述至少两条连接包括TCP连接以及第一UDP连接,所述至少一条连接包括第二UDP连接;
所述第一接入服务器在接收到所述应用服务器发送的所述第二IM消息时,向所述客户端转发所述第二IM消息的具体方式为:
在接收到所述应用服务器发送的所述第二IM消息时,通过所述TCP连接向所述客户端转发所述第二IM消息;
判断在转发所述第二IM消息后的第三预设时间段内是否接收到所述客户端返回的第三确认消息,所述第三确认消息用于指示所述第二IM消息转发成功;
当未接收到所述第三确认消息时,通过所述第一UDP连接向所述客户端转发所述第二IM消息。
本发明实施例中,客户端建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接,并从与第一接入服务器以及第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接,客户端通过当前选择的目标连接发送IM消息并判断在发送IM消息后的预设时间段内是否接收到确认消息,其中,该确认消息用于指示IM消息发送成功,当未接收到确认消息时,客户端从多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接,并执行通过当前选择的目标连接发送IM消息并判断在发送IM消息后的预设时间段内是否接收到确认消息的操作,直至客户端在通过当前选择的目标连接发送IM消息后的预设时间段内接收到确认消息。可见,本发明实施例能够通过客户端与接入服务器建立多条连接的方式使客户端在通过一条连接发送IM消息不成功的情况下不再通过该连接重复发送IM消息,而是通过另外一条连接发送IM消息,提高IM消息的传输可靠性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好理解本发明实施例公开的一种即时通讯IM消息的传输方法及装置、系统,下面先对本发明实施例适用的网络构架进行描述。请参阅图1,图1是本发明实施例公开的一种网络构架的结构示意图。如图1所示,该网络构架示意图可以包括多个客户端、由多个接入服务器组成的接入服务器集群、由多个应用服务器组成的应用服务器集群以及由多个在线服务器组成的在线服务器集群,其中,每个客户端与接入服务器集群中一个或多个接入服务器建立多条连接,接入服务器集群将客户端的接入位置信息上传至在线服务器集群,在线服务器集群负责对应用服务器集群提供客户端在线信息,且每个客户端均可以通过与接入服务器建立的连接与应用服务器集群中的应用服务器互发IM消息。在图1所示的网络构架中,客户端为即时通讯IM应用客户端,且可以运行在包括但不限于移动电话、移动电脑、平板电脑、个人数字助理(PersonalDigitalAssistant,PDA)、媒体播放器、智能电视、智能手表、智能眼镜、智能手环等移动终端上。
请参阅图2,图2是本发明实施例公开的一种即时通讯IM消息的传输方法的流程示意图。如图2所示,该即时通讯IM消息的传输方法可以包括以下步骤:
S201、客户端建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接。
本发明实施例中,第一接入服务器的数量以及第二接入服务器的数量可以为一个,也可以为多个,本发明实施例不做限定。
S202、客户端从与第一接入服务器以及第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接。
本发明实施例中,客户端可以根据预先设置的选择策略从与第一接入服务器以及第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接,如随机选择一条连接、根据每条连接的优先级选择一条优先级比较高的连接或选择传输可靠性比较高的连接(如TCP连接)等,本发明实施例不做限定。
S203、客户端通过当前选择的目标连接发送IM消息。
具体的,客户端通过当前选择的目标连接向与该目标连接对应的接入服务器发送IM消息,以使该接入服务器将该IM消息转发至应用服务器,进而完成IM消息的上行传输。
S204、客户端判断在发送上述IM消息后的预设时间段内是否接收到确认消息。
本发明实施例中,该确认消息用于指示上述IM消息发送成功。
本发明实施例中,当步骤S204的判断结果为是时,客户端确定上述IM消息发送成功,可以结束本次流程,也可以先输出用于提示IM消息发送成功的提示消息再结束本次流程,本发明实施例不做限定;当步骤S204的判断结果为否时,客户端确定上述IM消息没有发送成功,客户端执行步骤S205。
S205、客户端从上述多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接。
本发明实施例中,当客户端确定上述IM消息发送不成功时,重新选择一条连接作为当前发送IM消息的目标连接。
本发明实施例中,在执行完毕步骤S205之后,客户端重新执行步骤S203,直到客户端在通过当前选择的目标连接发送上述IM消息后的预设时间段内接收到上述确认消息,或直到客户端判断出IM消息的发送次数大于预设次数,或直到在IM消息的发送次数大于预设次数之前客户端在通过当前选择的目标连接发送上述IM消息后的预设时间段内接收到上述确认消息,本发明实施例不做限定。
作为一种可选的实施方式,上述多条连接中每条连接都存在与之对应的优先级,且客户端从上述多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接可以包括:
判断上述多条连接中是否存在未发送过上述IM消息的连接;
当上述多条连接中存在未发送过上述IM消息的连接时,从上述多条连接中选择未发送过上述IM消息且优先级最高的连接作为当前发送上述IM消息的目标连接;
当上述多条连接中不存在未发送过上述IM消息的连接时,从上述多条连接中选择优先级最高的连接作为当前发送上述IM消息的目标连接。
作为又一种可选的实施方式,上述至少两条连接可以包括客户端与第一接入服务器建立的传输控制协议(TCP,TransmissionControlProtocol)连接以及客户端与第一接入服务器建立的第一用户数据报协议(UDP,UserDatagramProtocol)连接,上述至少一条连接可以包括客户端与第二接入服务器建立的第二UDP连接。举例来说,假设TCP连接的优先级最高,第一UDP连接的优先级次之且第二UDP连接的优先级最低,则客户端发送IM消息的方法的应用场景如图4所示,图4是本发明实施例公开的一种即时通讯IM消息的传输方法的应用场景示意图。且基于图4的应用场景的IM消息的下行传输流程如下所述:
客户端选择优先级最高的TCP连接作为当前发送IM消息的目标连接;
客户端通过TCP连接发送IM消息,并判断在通过TCP连接发送IM消息后的预设时间段内是否接收到用于指示IM消息发送成功的确认消息;
当未接收到确认消息时,客户端选择第一UDP连接作为当前发送IM消息的目标连接,通过第一UDP连接发送上述IM消息,并判断在通过第一UDP连接发送上述IM消息后的预设时间段内是否接收到用于指示IM消息发送成功的确认消息;
当未接收到确认消息时,客户端选择第二UDP连接作为当前发送IM消息的目标连接,通过第二UDP连接发送上述IM消息,并判断在通过第二UDP连接发送上述IM消息后的预设时间段内是否接收到用于指示IM消息发送成功的确认消息;
当未接收到确认消息时,重复执行上述操作,直至上述IM消息的发送次大于到预设次数,或直至客户端在通过当前选择的目标连接发送上述IM消息后的预设时间段内接收到上述确认消息,或直至在上述IM消息的发送次数大于预设次数之前客户端在通过当前选择的目标连接发送IM消息后的预设时间段内接收到上述确认消息。
作为又一种可选的实施方式,当步骤S204的判断结果为否时,在执行步骤S205之前,还可以执行以下操作:
判断上述IM消息的发送次数是否小于等于预设次数,当上述IM消息的发送次数小于等于预设次数时,执行步骤S205。这样能够通过设置预设次数的方式控制IM消息的最大发送次数,减少了客户端的流量消耗,提高了用户体验。
且当判断出上述IM消息的发送次数大于预设次数时,还可以执行以下操作:
输出提示消息,其中,该提示消息用于提示上述IM消息发送失败。
在该又一种可选的实施方式中,当上述IM消息的发送次数大于预设次数时,客户端即可确定上述多条连接存在问题(如拥塞等),输出提示信息告知用户,进而使客户端根据用户输入的相关指令(如用户输入的停止发送上述IM消息的指令、网络切换指令或重新与其它接入服务器建立多条连接的连接建立指令等)或客户端中预选存储的传输策略(如当上述多条连接存在问题时自动切换网络的策略或自动断开上述多条连接并与新的接入服务器建立多条连接的策略等)执行相应的操作。这样进一步提高了IM消息的传输可靠性。
本发明实施例中,客户端中可以预先存储有IM消息的上行传输策略,该IM消息的上行传输策略可以是由策略服务器推送的,当客户端需要向应用服务器发送上行IM消息时,客户端可以根据策略服务器推送的IM消息的上行传输策略执行图2所示的即时通讯IM消息的传输方法,且IM消息的上行传输策略可以由IM消息的传输系统定期根据IM消息的传输效果进行评估并通过策略服务器将评估结果下发至客户端,以实现IM消息的上行传输策略的演进和优化管理。
本发明实施例中,客户端建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接,并从与第一接入服务器以及第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接,客户端通过当前选择的目标连接发送IM消息并判断在发送IM消息后的预设时间段内是否接收到确认消息,其中,该确认消息用于指示IM消息发送成功,当未接收到确认消息时,客户端从多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接,并执行通过当前选择的目标连接发送IM消息,并判断在发送IM消息后的预设时间段内是否接收到确认消息的操作,直至客户端在通过当前选择的目标连接发送IM消息后的预设时间段内接收到确认消息。可见,本发明实施例能够通过客户端与接入服务器建立多条连接的方式使客户端在通过一条连接发送IM消息不成功的情况下不再通过该连接重复发送IM消息,而是通过另外一条连接发送IM消息,提高IM消息的传输可靠性。
请参阅图3,图3是本发明实施例公开的另一种即时通讯IM消息的传输方法的流程示意图。如图3所示,该即时通讯IM消息的传输方法可以包括以下步骤:
S301、应用服务器从第一接入服务器以及第二接入服务器中选择一个接入服务器作为当前发送IM消息的目标接入服务器。
本发明实施例中,应用服务器中预先存储有在线服务器集群上传的客户端的接入位置信息,即与客户端建立连接的多个接入服务器的信息,其中,第一接入服务器用于预先与客户端建立至少两条连接,第二接入服务器用于预先与客户端建立至少一条连接,且第一接入服务器的数量以及第二接入服务器的数量可以为一个,也可以为多个,本发明实施例不做限定。
S302、应用服务器向当前选择的目标接入服务器发送IM消息,以使该目标接入服务器向客户端转发IM消息。
S303、应用服务器判断在发送上述IM消息后的第一预设时间段内是否接收到第一确认消息。
本发明实施例中,当步骤S303的判断结果为是时,应用服务器即可确认上述IM消息发送成功,可以直接结束本次流程;当步骤S303的判断结果为否时,应用服务器确定上述IM消息没有发送成功,应用服务器可以执行步骤S304。
本发明实施例中,该第一确认消息用于指示上述IM消息发送成功。
S304、应用服务器从上述第一接入服务器以及第二接入服务器中选择除上述目标接入服务器之外的一个接入服务器作为当前发送IM消息的目标接入服务器。
本发明实施例中,在执行完毕步骤S304之后,应用服务器重新执行步骤S302,直到应用服务器在通过当前选择的目标接入服务器发送上述IM消息后的第一预设时间段内接收到上述第一确认消息,或直到应用服务器判断出上述IM消息的发送次数大于预设次数,或直到在上述IM消息的发送次数大于预设次数之前应用服务器在通过当前选择的目标接入服务器发送上述IM消息后的第一预设时间段内接收到上述第一确认消息,本发明实施例不做限定。
作为一种可选的实施方式,上述第一接入服务器以及上述第二接入服务器中每个接入服务器都存在与之对应的优先级,且应用服务器从上述第一接入服务器以及上述第二接入服务器中选择除上述目标接入服务器之外的一个接入服务器作为当前发送上述IM消息的目标接入服务器可以包括:
判断上述第一接入服务器以及上述第二接入服务器中是否存在未发送过上述IM消息的接入服务器;
当存在未发送过上述IM消息的接入服务器时,从上述第一接入服务器以及上述第二接入服务器中选择未发送过上述IM消息且优先级最高的接入服务器作为当前发送上述IM消息的目标接入服务器;
当不存在未发送过上述IM消息的接入服务器时,从上述第一接入服务器以及上述第二接入服务器中选择优先级最高的接入服务器作为当前发送上述IM消息的目标接入服务器。
作为另一种可选的实施方式,上述至少两条连接可以包括客户端与第一接入服务器建立的TCP连接以及客户端与第一接入服务器建立的第一UDP连接,上述至少一条连接可以包括客户端与第二接入服务器建立的第二UDP连接。
在该另一种可选的实施方式中,在当前选择的目标接入服务器为第一接入服务器的情况下,当前选择的目标接入服务器向客户端转发上述IM消息的具体方式可以为:
由第一接入服务器通过上述TCP连接向客户端转发上述IM消息;
由第一接入服务器判断在通过上述TCP连接转发上述IM消息后的第二预设时间段内是否接收到客户端返回的第二确认消息,其中,该第二确认消息用于指示上述IM消息转发成功;
当未接收到上述第二确认消息时,由第一接入服务器通过上述第一UDP连接向客户端转发上述IM消息。
在该可选的实施方式中,当当前选择的目标接入服务器与客户端建立多条连接时,由当前选择的目标接入服务器从多条连接中选择一条连接转发上述IM消息,当通过当前选择的连接未成功转发上述IM消息时,从多条连接中选择另外一条连接转发上述IM消息。这样提高了IM消息的传输成功率,进而提高了IM消息的传输可靠性。
作为又一种可选的实施方式,当步骤S303的判断结果为否时,在执行步骤S304之前,还可以执行以下操作:
判断上述IM消息的发送次数是否小于等于预设次数,当上述IM消息的发送次数小于等于预设次数时,执行步骤S304。这样能够通过设置预设次数的方式控制IM消息的最大发送次数,减少了客户端的流量消耗,提高了用户体验。
举例来说,假设客户端预先与第一接入服务器建立TCP连接以及第一UDP连接,客户端预先与第二接入服务器建立第二UDP连接,且第一接入服务器的优先级比第二接入服务器的优先级高,TCP连接的优先级比第一UDP连接的优先级高,第一UDP连接的优先级比第二UDP连接的优先级高,且应用服务器向客户端发送IM消息的方法的应用场景如图4所示,图4是本发明实施例公开的一种即时通讯IM消息的传输方法的应用场景示意图。且基于图4的应用场景的IM消息的下行传输流程如下所述:
应用服务器选择优先级最高的第一接入服务器作为当前发送IM消息的目标接入服务器,并向第一接入服务器发送IM消息,以使第一接入服务器向客户端转发该IM消息;
应用服务器判断在向第一接入服务器发送IM消息后的第一预设时间段内是否接收到用于指示该IM消息发送成功的第一确认消息;
当未接收到第一确认消息时,应用服务器选择优先级低的第二接入服务器作为当前发送IM消息的目标接入服务器,并向第二接入服务器发送上述IM消息,以使第二接入服务器向客户端转发IM消息;
应用服务器判断在向第二接入服务器发送上述IM消息的第一预设时间段内是否接收到用于指示该IM消息发送成功的第一确认消息,若否,则重新执行上述操作,直至上述IM消息的发送次数达到预设次数,或直至应用服务器在向当前选择的目标接入服务器发送上述IM消息后的第一预设时间段内接收到上述第一确认消息,或直至在上述IM消息的发送次数到达预设次数之前应用服务器在向当前选择的目标接入服务器发送IM消息后的第一预设时间段内接收到上述第一确认消息。
本发明实施例中,应用服务器中可以预先存储有IM消息的下行传输策略,该IM消息的下行传输策略可以是由策略服务器推送的,当应用服务器需要向客户端发送下行IM消息时,应用服务器可以根据策略服务器推送的IM消息的下行传输策略执行图3所示的即时通讯IM消息的传输方法,且IM消息的下行传输策略可以由IM消息的传输系统定期根据IM消息的传输效果进行评估并通过策略服务器将评估结果下发至应用服务器,以实现IM消息的下行传输策略的演进和优化管理。
可见,实施本发明实施例在发送下行IM消息时,能够通过与客户端建立连接的多个接入服务器发送IM消息,即在通过其中一个接入服务器发送IM消息不成功的情况下,通过另一个接入服务器发送IM消息,这样能够提高IM消息的传输成功率,进而提高IM消息的传输可靠性。
请参阅图5,图5是本发明实施例公开的一种客户端的结构示意图。如图5所示,该客户端可以包括建立模块501、选择模块502、通信模块503以及判断模块504,其中:
建立模块501用于建立与第一接入服务器间的至少两条连接以及与第二接入服务器间的至少一条连接。
选择模块502用于从建立模块501与第一接入服务器以及第二接入服务器建立的多条连接中选择一条连接作为当前发送IM消息的目标连接。
通信模块503用于通过当前选择的目标连接发送IM消息。
判断模块504用于判断在发送上述IM消息后的预设时间段内通信模块503是否接收到确认消息,其中,该确认消息用于指示上述IM消息发送成功。
选择模块502还可以用于当判断模块504判断出通信模块503未接收到上述确认消息时,从上述多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接,并触发通信模块503执行上述通过当前选择的目标连接发送IM消息的操作以及判断模块504执行上述判断在发送IM消息后的预设时间段内是否接收到确认消息的操作,直至判断模块504判断出在通过当前选择的目标连接发送IM消息后的预设时间段内通信模块503接收到上述确认消息,或直至判断模块504判断出上述IM消息的发送次数大于预设次数,或直至判断模块504判断出在上述IM消息的发送次数大于预设次数之前,在通过当前选择的目标连接发送IM消息后的预设时间段内通信模块503接收到上述确认消息。
作为一种可选的实施方式,上述多条连接中每条连接都存在与之对应的优先级。且选择模块502从上述多条连接中选择除上述目标连接之外的一条连接作为当前发送IM消息的目标连接的具体方式可以为:
判断上述多条连接中是否存在未发送过上述IM消息的连接;
当上述多条连接中存在未发送过上述IM消息的连接时,从上述多条连接中选择未发送过上述IM消息且优先级最高的连接作为当前发送IM消息的目标连接;
当上述多条连接中不存在未发送过上述IM消息的连接时,从上述多条连接中选择优先级最高的连接作为当前发送IM消息的目标连接。
作为另一种可选的实施方式,上述至少两条连接可以包括图5所示的客户端与第一接入服务器建立的TCP连接、图5所示的客户端与第一接入服务器建立的第一UDP连接,上述至少一条连接可以包括图5所示的客户端与第二接入服务器建立的第二UDP连接。
作为又一种可选的实施方式,判断模块504还可以用于在选择模块502从上述多条连接中选择除目标连接之外的一条连接作为当前发送IM消息的目标连接之前,判断上述IM消息的发送次数是否小于等于预设次数,当上述IM消息的发送次数小于等于预设次数时,触发选择模块502执行上述从上述多条连接中选择除目标连接之外的一条连接作为当前发送IM消息的目标连接的操作。
在该又一种可选的实施方式中,在图5所示的客户端的结构基础上,该客户端还可以包括输出模块505,且还包括输出模块505的客户端如图6所示,图6是本发明实施例公开的另一种客户端的结构示意图。其中:
输出模块505用于当判断模块504判断出上述IM消息的发送次数大于预设次数时,输出提示消息,其中,提示消息用于提示上述IM消息发送失败。
在该又一种可选的实施方式中,当上述IM消息的发送次数大于预设次数时,客户端即可确定上述多条连接存在问题(如拥塞等),客户端的输出模块505输出提示信息告知用户,进而使客户端根据用户输入的相关指令(如用户输入的停止发送上述IM消息的指令、网络切换指令或重新与其它接入服务器建立多条连接的连接建立指令等)或客户端中预选存储的传输策略(如当上述多条连接存在问题时自动切换网络的策略或自动断开上述多条连接并与新的接入服务器建立多条连接的策略等)执行相应的操作。这样进一步提高了IM消息传输的可靠性。
可见,本发明实施例能够通过客户端与接入服务器建立多条连接的方式使客户端在通过一条连接发送IM消息不成功的情况下不再通过该连接重复发送IM消息,而是通过另外一条连接发送IM消息,提高IM消息的传输可靠性。
请参阅图7,图7是本发明实施例公开的一种应用服务器的结构示意图。如图7所示,该应用服务器可以包括选择模块701、通信模块702以及判断模块703,其中:
选择模块701用于从第一接入服务器以及第二接接入服务器中选择一个接入服务器作为当前发送IM消息的目标接入服务器,其中,第一接入服务器用于预先与客户端建立至少两条连接,第二接入服务器用于预先与客户端建立至少一条连接。
通信模块702用于向当前选择的目标接入服务器发送IM消息,以使该目标接入服务器向客户端转发IM消息。
判断模块703用于判断在发送上述IM消息后的第一预设时间段内通信模块702是否接收到第一确认消息,其中,该第一确认消息用于指示上述IM消息发送成功。
选择模块701还可以用于当判断模块703判断出在发送上述IM消息后的第一预设时间段内通信模块702未接收到第一确认消息时,从上述第一接入服务器以及上述第二接入服务器中选择除上述目标接入服务器之外的一个接入服务器作为当前发送IM消息的目标接入服务器,并触发上述通信模块702执行向当前选择的目标接入服务器发送IM消息的操作以及判断模块703判断在发送上述IM消息后的第一预设时间段内通信模块702是否接收到第一确认消息的操作,直至判断模块703判断出在向当前选择的目标接入服务器发送上述IM消息后的第一预设时间段内通信模块702接收到上述第一确认消息,或直至判断模块703判断出上述IM消息的发送次数大于预设次数,或直至判断模块703判断出在上述IM消息的发送次数大于预设次数之前,在通过当前选择的目标接入服务器发送IM消息后的第一预设时间段内通信模块702接收到上述第一确认消息。
作为一种可选的实施方式,上述第一接入服务器以及上述第二接入服务器中每个接入服务器都存在与之对应的优先级,且选择模块701从上述第一接入服务器以及上述第二接入服务器中选择除目标接入服务器之外的一个接入服务器作为当前发送IM消息的目标接入服务器的具体方式可以为:
判断上述第一接入服务器以及上述第二接入服务器中是否存在未发送过上述IM消息的接入服务器;
当存在未发送过上述IM消息的接入服务器时,从上述第一接入服务器以及上述第二接入服务器中选择未发送过上述IM消息且优先级最高的接入服务器作为当前发送IM消息的目标接入服务器;
当不存在未发送过上述M消息的接入服务器时,从上述第一接入服务器以及第二接入服务器中选择优先级最高的接入服务器作为当前发送IM消息的目标接入服务器。
作为另一种可选的实施方式,上述至少两条连接可以包括客户端与第一接入服务器建立的TCP连接以及客户端与第一接入服务器建立的第一UDP连接,上述至少一条连接可以包括客户端与第二接入服务器建立的第二UDP连接;
当当前选择的目标接入服务器为第一接入服务器时,当前选择的目标接入服务器向客户端转发上述IM消息的具体方式可以为:
由上述第一接入服务器通过上述TCP连接向客户端转发上述IM消息;
由上述第一接入服务器判断在通过上述TCP连接转发上述IM消息后的第二预设时间段内是否接收到客户端返回的第二确认消息,其中,该第二确认消息用于指示上述IM消息转发成功;
当未接收到上述第二确认消息时,由第一接入服务器通过上述第一UDP连接向客户端转发上述IM消息。
作为又一种可选的实施方式,判断模块703还可以用于在向当前选择的目标接入服务器发送上述IM消息后的第一预设时间内未接收到第一确认消息时且在选择模块701从上述多个接入服务器中选择除目标接入服务器之外的一个接入服务器作为当前发送IM消息的目标接入服务器之前,判断上述IM消息的发送次数是否大于预设次数,当判断结果为是时,应用服务器确定IM消息发送失败,当判断结果为否时,触发选择模块701执行上述从多个接入服务器中选择除该目标接入服务器之外的一个接入服务器作为当前发送上述IM消息的目标接入服务器的操作。
可见,实施本发明实施例在发送下行IM消息时,能够通过与客户端建立连接的多个接入服务器发送IM消息,即在通过其中一个接入服务器发送IM消息不成功的情况下,通过另一个接入服务器发送IM消息,这样能够提高IM消息的传输成功率,进而提高IM消息的传输可靠性。
请参阅图8,图8是本发明实施例公开的一种即时通讯IM消息的传输系统的结构示意图。如图8所示,该传输系统可以包括客户端、第一接入服务器、第二接入服务器以及应用服务器,其中:
客户端,用于建立与第一接入服务器间的至少两条连接(图8中只画出两条)以及与第二接入服务器间的至少一条连接(图8中只画出一条),从该至少两条连接以及该至少一条连接中选择一条连接作为当前发送第一IM消息的目标连接,通过当前选择的目标连接向与该目标连接对应的接入服务器发送第一IM消息,并判断在发送第一IM消息后的第一预设时间段内是否接收到第一确认消息,若否,则从该至少两条连接以及该至少一条连接中选择除该目标连接之外的一条连接作为当前发送第一IM消息的目标连接,执行上述通过当前选择的目标连接向与该目标连接对应的接入服务器发送第一IM消息,并判断在发送第一IM消息后的第一预设时间段内是否接收到第一确认消息的操作,直至在通过当前选择的目标连接发送第一IM消息后的第一预设时间段内接收到第一确认消息,其中,其中,该第一确认消息用于指示第一IM消息发送成功。
第一接入服务器,用于与客户端建立上述至少两条连接,并在接收到客户端发送的第一IM消息时,向应用服务器转发第一IM消息;
第二接入服务器,用于与客户端建立上述至少一条连接,并在接收到客户端发送的第一IM消息时,向应用服务器转发第一IM消息;
应用服务器,用于接收上述目标连接对应的接入服务器发送的第一IM消息,并向客户端返回上述第一确认消息。
在一个可选的实施例中,应用服务器,还可以用于从上述第一接入服务器以及上述第二接入服务器中选择一个接入服务器作为当前发送第二IM消息的目标接入服务器,向当前选择的目标接入服务器发送第二IM消息,并判断在发送第二IM消息后的第二预设时间段内是否接收到第二确认消息,若否,则从上述第一接入服务器以及上述第二接入服务器中选择除上述目标接入服务器之外的一个接入服务器作为当前发送第二IM消息的目标接入服务器,执行上述向当前选择的目标接入服务器发送第二IM消息,并判断在发送第二IM消息后的第二预设时间段内是否接收到第二确认消息的操作,直至在向当前选择的目标接入服务器发送第二IM消息后的第二预设时间段内接收到第二确认消息,其中,该第二确认消息用于指示第二IM消息发送成功;
第一接入服务器,还用于在接收到应用服务器发送的第二IM消息时,向客户端转发第二IM消息;
第二接入服务器,还用于在接收到应用服务器发送的第二IM消息时,向客户端转发第二IM消息;
客户端,还用于接收目标接入服务器发送的第二IM消息,并向应用服务器返回第二确认消息。
在该可选的实施方式中,进一步可选的,上述至少两条连接包括TCP连接以及第一UDP连接,且上述至少一条连接包括第二UDP连接。此时第一接入服务器在接收到应用服务器发送的第二IM消息时,向客户端转发第二IM消息的具体方式可以为:
在接收到应用服务器发送的第二IM消息时,通过TCP连接向客户端转发第二IM消息;
判断在转发第二IM消息后的第三预设时间段内是否接收到客户端返回的第三确认消息,其中,该第三确认消息用于指示第二IM消息转发成功;
当未接收到第三确认消息时,通过第一UDP连接向客户端转发第二IM消息。
可见,本发明实施例能够通过客户端与接入服务器建立多条连接的方式使客户端在通过一条连接发送IM消息不成功的情况下不再通过该连接重复发送IM消息,而是通过另外一条连接发送IM消息,且在发送下行IM消息时,能够通过与客户端建立连接的多个接入服务器发送IM消息,即在通过其中一个接入服务器发送IM消息不成功的情况下,通过另一个接入服务器发送IM消息,这样能够提高IM消息的传输成功率,进而提高IM消息的传输可靠性。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作以及模块并不一定是本发明所必须的。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例客户端中的模块可以根据实际需要进行合并、划分和删减。
本发明实施例应用服务器中的模块可以根据实际需要进行合并、划分和删减。
本发明实施例中所述模块可以通过通用集成电路,例如CPU(CentralProcessingUnit,中央处理器),或通过ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路)来实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上对本发明实施例所提供的一种即时通讯IM消息的传输方法及装置、系统进行了详细介绍,本文中应用了具体实例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。