发明内容
针对现有消息传输方法中接收用户回复确认消息影响服务端性能,增加用户端流量的问题。本发明提出一种服务端的消息传输处理方法及其系统,能够准确检测传输的消息是否丢失,且无需接收消息的用户端发送确认消息,减少发送确认消息对服务端造成的性能影响,不会增加用户端的流量。
一种服务端的消息传输处理方法,包括以下步骤:
在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
如果接收到所述用户端发送的消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间,则向所述用户端重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
一种服务端的消息传输处理系统,包括:
消息发送模块,用于在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
消息重传模块,用于如果接收到所述用户端发送的消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间,则向所述用户端重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的服务端的消息传输处理方法及其系统中,通过在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间后发送给用户端,使用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
针对上述问题,本发明还提出一种用户端的消息传输处理方法及其系统,能够准确检测传输的消息是否丢失,且无需接收消息的用户端发送确认消息,减少发送确认消息对服务端造成的性能影响,不会增加用户端的流量。
一种用户端的消息传输处理方法,包括以下步骤:
接收服务端发送的消息,其中,所述服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间;
根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较,如果二者不相同,则向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
一种用户端的消息传输处理系统,包括:
消息接收模块,用于接收服务端发送的消息,其中,所述服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间;
重传请求模块,用于根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较,如果二者不相同,则向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的用户端的消息传输处理方法及其系统中,接收服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
针对上述问题,本发明还提出一种消息传输方法及其系统,能够准确检测传输的消息是否丢失,且无需接收消息的用户端发送确认消息,减少发送确认消息对服务端造成的性能影响,不会增加用户端的流量。
一种消息传输方法,包括以下步骤:
服务端在发送给用户端的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
用户端接收服务端发送的消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间,将所述服务端上一次消息发送时间与所述用户端上一次消息接收时间比较,如果二者不相同,则向所述服务端发送消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间;
服务端接收到所述消息重传指令时,重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
一种消息传输系统,包括服务端和用户端:
所述服务端用于在发送给用户端的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;并在接收到用户端发送的消息重传指令时,重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息;
所述用户端用于接收服务端发送的消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间,将所述服务端上一次消息发送时间与所述用户端上一次消息接收时间比较,如果二者不相同,则向所述服务端发送消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间。
本发明的消息传输方法及其系统中,服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。服务端根据所述消息重传指令重传相应的消息,消除消息丢失的影响。并且用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
具体实施方式
请参阅图2,图2是本发明服务端的消息传输处理方法的流程示意图。
所述服务端的消息传输处理方法,包括以下步骤:
S202,在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
S204,如果接收到所述用户端发送的消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间,则向所述用户端重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的服务端的消息传输处理方法中,通过在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间后发送给用户端,使用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,为获得所述服务端本次消息发送时间和服务端上一次消息发送时间,可以在所述服务端发送每个消息时对所述消息的发送时间进行保存。
在一个优选实施方式中,可对各个接收数据的用户端都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端对所述用户端发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端的上一次消息发送时间。
对于群组通信的情况下,步骤S202可以具体为:
接收用户端发送的群组消息至服务端,在所述群组消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,并将所述群组消息发送给所述群组的其他用户端。
在用户与用户之间的通信过程中,发送用户端将消息发送到服务端,服务端再将所述消息转发到相应的接收用户端。因此,在这种情形下,所述服务端发送消息的时间可以等于所述发送用户端将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
因为服务端对用户端第一次发送消息时,没有所谓的上一次发送消息的时间,因此服务端对用户端第一次发送的消息设置lasttime=0。
步骤S204中,如果接收到所述用户端发送的消息重传指令,则根据所述消息重传指令重传相应的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
请参阅图3,图3是本发明用户端的消息传输处理方法的流程示意图。
所述用户端的消息传输处理方法,包括以下步骤:
S302,接收服务端发送的消息,其中,所述服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间;
S304,根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较,如果二者不相同,则向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的用户端的消息传输处理方法中,接收服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,所述服务端发送的消息中包括的服务端本次消息发送时间和服务端上一次消息发送时间,由服务端设定。服务端可以对各个接收数据的用户端都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端对所述用户端发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端的上一次消息发送时间
在用户与用户之间的通信情形下,发送用户端将消息发送到服务端,服务端再将所述消息转发到相应的接收用户端。因此,在这种情形下,所述服务端发送消息的时间可以等于所述发送用户端将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
步骤S304中,根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较。
所述用户端每次接受到服务端发送的消息时,记录所述消息的接收时间,可将各个消息的接收时间记录成接收时间队列,所述接收时间队列至少包含有上一次消息接收时间。从而在每一次接收到消息的时候查找到上一次消息接收的时间。
然后,将从所述服务端发送的本次消息中获取到的所述服务端上一次消息发送时间,与查找到的用户端上一次消息接收时间比较。
如果两个时间相同,则说明证明在用户端两次接收消息之间没有其他消息丢失,因此可直接保存所述消息;如果两个时间不相同,则说明在用户端两次接收消息之间所述服务端还发送了其他的消息,而用户端没有收到,即这两个时间之间的消息发生丢失,因此向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
针对服务端对用户端第一次发送消息的情况,进一步执行以下处理:
判断所述服务端上一次消息发送时间是否为0,如果是,则直接保存所述消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间。
请参阅图4,图4是本发明消息传输方法的流程示意图。
所述消息传输方法,包括以下步骤:
S402,服务端在发送给用户端的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
S404,用户端接收服务端发送的消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间,将所述服务端上一次消息发送时间与所述用户端上一次消息接收时间比较,如果二者不相同,则向所述服务端发送消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间;
S406,服务端接收到所述消息重传指令时,重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的消息传输方法中,服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。服务端根据所述消息重传指令重传相应的消息,消除消息丢失的影响。并且用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,所述服务端为获得所述服务端本次消息发送时间和服务端上一次消息发送时间,可以在所述服务端发送每个消息时对所述消息的发送时间进行保存。
在一个优选实施方式中,所述服务端可对各个接收数据的用户端都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端对所述用户端发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端的上一次消息发送时间。
对于群组通信的情况下,步骤S402可以具体为:
接收用户端发送的群组消息至服务端,在所述群组消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,并将所述群组消息发送给所述群组的其他用户端。
在用户与用户之间的通信过程中,发送用户端将消息发送到服务端,服务端再将所述消息转发到相应的接收用户端。因此,在这种情形下,所述服务端发送消息的时间可以等于所述发送用户端将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
因为服务端对用户端第一次发送消息时,没有所谓的上一次发送消息的时间,因此服务端对用户端第一次发送的消息设置lasttime=0。
步骤S404中,用户端根据所述服务端本次消息发送时间更新用户端消息接收时间,并将从所述服务端发送的本次消息中获取到的所述服务端上一次消息发送时间,与查找到的用户端上一次消息接收时间比较。
如果两个时间相同,则说明证明在用户端两次接收消息之间没有其他消息丢失,因此可直接保存所述消息;如果两个时间不相同,则说明在用户端两次接收消息之间所述服务端还发送了其他的消息,而用户端没有收到,即这两个时间之间的消息发生丢失,因此向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
针对服务端对用户端第一次发送消息的情况,所述用户端可进一步执行以下处理:
判断所述服务端上一次消息发送时间是否为0,如果是,则直接保存所述消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间。
步骤S406中,服务端接收到所述用户端发送的消息重传指令,根据所述消息重传指令重传相应的消息。
请参阅图5,图5是本发明服务端的消息传输处理系统的结构示意图。
所述服务端的消息传输处理系统,包括:
消息发送模块51,用于在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;
消息重传模块52,用于如果接收到所述用户端发送的消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间,则向所述用户端重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的服务端的消息传输处理系统中,通过在服务端发送的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间后发送给用户端,使用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,为获得所述服务端本次消息发送时间和服务端上一次消息发送时间,所述消息发送模块51可以在所述服务端发送每个消息时对所述消息的发送时间进行保存。
在一个优选实施方式中,所述消息发送模块51可对各个接收数据的用户端都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端对所述用户端发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端的上一次消息发送时间。
对于群组通信的情况下,所述消息发送模块51接收用户端发送的群组消息至服务端,在所述群组消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,并将所述群组消息发送给所述群组的其他用户端。
在用户与用户之间的通信过程中,发送用户端将消息发送到服务端,服务端再将所述消息转发到相应的接收用户端。因此,在这种情形下,所述服务端发送消息的时间可以等于所述发送用户端将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
因为服务端对用户端第一次发送消息时,没有所谓的上一次发送消息的时间,因此服务端对用户端第一次发送的消息设置lasttime=0。
所述消息重传模块52如果接收到所述用户端发送的消息重传指令,则根据所述消息重传指令重传相应的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端的所述消息重传模块52可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端的所述消息重传模块52可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
请参阅图6,图6是本发明用户端的消息传输处理系统的结构示意图。
所述用户端的消息传输处理方法,包括以下步骤:
消息接收模块61,用于接收服务端发送的消息,其中,所述服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间;
重传请求模块62,用于根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较,如果二者不相同,则向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
本发明的用户端的消息传输处理系统中,接收服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,所述服务端发送的消息中包括的服务端本次消息发送时间和服务端上一次消息发送时间,由服务端设定。服务端可以对各个接收数据的用户端都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端对所述用户端发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端的上一次消息发送时间
在用户与用户之间的通信情形下,发送用户端将消息发送到服务端,服务端再将所述消息转发到相应的接收用户端。因此,在这种情形下,所述服务端发送消息的时间可以等于所述发送用户端将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
所述重传请求模块62首先根据所述服务端本次消息发送时间更新用户端消息接收时间,并将所述服务端上一次消息发送时间与用户端上一次消息接收时间比较。
所述用户端每次接受到服务端发送的消息时,记录所述消息的接收时间,可将各个消息的接收时间记录成接收时间队列,所述接收时间队列至少包含有上一次消息接收时间。从而在每一次接收到消息的时候查找到上一次消息接收的时间。
然后,将从所述服务端发送的本次消息中获取到的所述服务端上一次消息发送时间,与查找到的用户端上一次消息接收时间比较。
如果两个时间相同,则说明证明在用户端两次接收消息之间没有其他消息丢失,因此可直接保存所述消息;如果两个时间不相同,则说明在用户端两次接收消息之间所述服务端还发送了其他的消息,而用户端没有收到,即这两个时间之间的消息发生丢失,因此所述重传请求模块62向服务端发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
针对服务端对用户端第一次发送消息的情况,进一步执行以下处理:
判断所述服务端上一次消息发送时间是否为0,如果是,则直接保存所述消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间。
请参阅图7,图7是本发明消息传输方法的流程示意图。
所述消息传输系统,包括:服务端71和用户端72:
所述服务端71用于在发送给用户端的消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,将所述消息发送给用户端;并在接收到用户端发送的消息重传指令时,重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息;
所述用户端72用于接收服务端发送的消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间,将所述服务端上一次消息发送时间与所述用户端上一次消息接收时间比较,如果二者不相同,则向所述服务端发送消息重传指令,其中,所述消息重传指令包括用户端上一次消息接收时间。
本发明的消息传输系统中,服务端发送的消息中包括服务端本次消息发送时间和服务端上一次消息发送时间。因此,用户端可以根据所述消息中的服务端上一次消息发送时间与用户端上一次消息接收时间是否对比相同,从而确定服务端发送的消息有无丢失,如果丢失可通过对所述服务端发送消息重传指令,请求重新发送用户端上一次消息接收时间到服务端本次消息发送时间之间丢失的消息。服务端根据所述消息重传指令重传相应的消息,消除消息丢失的影响。并且用户端无需再每次接受消息后都对服务端发送去确认消息,减少发送确认消息对服务端造成的性能影响,并且不会增加用户端的流量。尤其在多人会话、群组会话的通信方式中能够大大减少服务端的负担。
其中,服务端71为获得所述服务端本次消息发送时间和服务端上一次消息发送时间,可以在所述服务端71发送每个消息时对所述消息的发送时间进行保存。
在一个优选实施方式中,所述服务端71可对各个接收数据的用户端72都创建一个发送消息队列,所述发送消息队列中保存预定时间内服务端71对所述用户端72发送的消息,以及各个消息的发送时间。则,根据所述发送消息队列,可以查找到对相应的用户端72的上一次消息发送时间。
对于群组通信的情况下,所述服务端71接收用户端72发送的群组消息,在所述群组消息中添加服务端本次消息发送时间和服务端上一次消息发送时间,并将所述群组消息发送给所述群组的其他用户端72。
在用户与用户之间的通信过程中,发送用户端72将消息发送到服务端71,所述服务端71再将所述消息转发到相应的接收用户端72。因此,在这种情形下,所述服务端71发送消息的时间可以等于所述发送用户端72将消息发送至服务端的时间,记为sendtime,可以64位毫秒数表示。而所述服务端上一次发送消息的时间也等于所述发送用户端上一次将消息发送至服务端的时间,记为lasttime,也可以64位毫秒数表示。
因为所述服务端71对所述用户端72第一次发送消息时,没有所谓的上一次发送消息的时间,因此服务端对用户端第一次发送的消息设置lasttime=0。
所述用户端72根据所述服务端本次消息发送时间更新用户端消息接收时间,并将从所述服务端发送的本次消息中获取到的所述服务端上一次消息发送时间,与查找到的用户端上一次消息接收时间比较。
如果两个时间相同,则说明证明在用户端两次接收消息之间没有其他消息丢失,因此可直接保存所述消息;如果两个时间不相同,则说明在用户端两次接收消息之间所述服务端还发送了其他的消息,而用户端没有收到,即这两个时间之间的消息发生丢失,因此向服务端71发送消息重传指令,请求重新发送所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述用户端发送的消息。
其中,所述消息重传指令至少包括用户端上一次消息接收时间,所述服务端71可根据所述消息重传指令,获取所述用户端上一次消息接收时间;然后可以根据自身保存的发送消息记录自行获取服务端本次消息发送时间,在所述服务端保存的历史发送消息记录(如上述的发送消息队列)中查找从所述用户端上一次消息接收时间到所述服务端本次消息发送时间之间对所述服务端对所述用户端发送的消息,将对应的所述消息重新发送到所述用户端。
在一个优选实施例中,考虑到重传消息发送到服务端可能有延时。所述消息重传指令进一步包括所述服务端本次消息发送时间。则所述服务端71可以直接根据所述消息重传指令中包含的两个时间点,直接查找这段时间内对相应用户端发送的消息,然后执行重传操作。
针对服务端对用户端第一次发送消息的情况,所述用户端72可进一步执行以下处理:
判断所述服务端上一次消息发送时间是否为0,如果是,则直接保存所述消息,并根据所述服务端本次消息发送时间更新用户端消息接收时间。
所述服务端71接收到所述用户端发送的消息重传指令后,根据所述消息重传指令重传相应的消息。
本领域普通技术人员可以理解实现上述实施方式中的全部或部分流程以及对应的系统、所述音乐播放器,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施方式的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。