一种信息同步系统、方法、装置、设备及存储介质转让专利

申请号 : CN202110943989.X

文献号 : CN113766259B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚存晨魏文长李求会于猛杨子闻张凯赵忻

申请人 : 北京达佳互联信息技术有限公司

摘要 :

本公开关于一种信息同步系统、方法、装置、设备及存储介质,该方法包括:第一客户端获取针对多媒体房间的状态变更请求,将状态变更请求发送至业务服务器;业务服务器根据状态变更请求,更新多媒体房间的第一房间信息,向第一客户端返回状态变更请求的请求结果,并生成第一房间信息的增量消息,通过长连接向多媒体房间内的第二客户端发送增量消息;第一客户端在接收到请求结果之后,执行状态变更请求对应的操作;第二客户端根据增量消息,更新多媒体房间的第二房间信息,第二房间信息为第二客户端本地存储的多媒体房间的房间信息。这样,减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。

权利要求 :

1.一种信息同步系统,其特征在于,所述系统包括:

第一客户端,用于获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

所述业务服务器,用于根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;

所述第一客户端,还用于在接收到所述请求结果之后,执行所述状态变更请求对应的操作;

所述第二客户端,用于根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。

2.根据权利要求1所述的系统,其特征在于,

所述业务服务器,具体用于根据上一条增量消息的版本号,确定当前生成的增量消息的版本号,通过长连接向所述多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号;

所述第二客户端,具体用于在接收到的增量消息的版本号大于所述第二房间信息的版本号的情况下,根据接收到的增量消息,更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号。

3.根据权利要求1所述的系统,其特征在于,

所述第二客户端,还用于按照第一时间间隔,向所述业务服务器发送心跳消息;

所述业务服务器,还用于在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,判定该第二客户端离开所述多媒体房间,更新所述第一房间信息中的客户端列表,执行所述生成所述第一房间信息的增量消息的步骤。

4.根据权利要求1所述的系统,其特征在于,

所述第二客户端,还用于按照第三时间间隔,检测与所述业务服务器之间的长连接,在所述长连接断开的情况下,重新与所述业务服务器建立长连接。

5.根据权利要求1所述的系统,其特征在于,

所述第二客户端,还用于按照第四时间间隔,向所述业务服务器发送房间信息获取请求;所述第四时间间隔为大于5分钟的时间间隔;

所述业务服务器,还用于在接收到所述房间信息获取请求后,向所述第二客户端返回所述第一房间信息;

所述第二客户端,还用于将接收到的第一房间信息存储为新的第二房间信息。

6.根据权利要求1所述的系统,其特征在于,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,所述第二客户端,还用于发送增量消息获取请求,所述增量消息获取请求携带所述第二房间信息的版本号;

所述业务服务器,还用于在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息;或,在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。

7.根据权利要求1所述的系统,其特征在于,

所述第二客户端,还用于在更新所述多媒体房间的第二房间信息后,根据更新后的第二房间信息执行相应的操作。

8.根据权利要求1所述的系统,其特征在于,所述状态变更请求为创建房间请求;

所述业务服务器,具体用于根据所述创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息,并向所述第一客户端返回创建房间确认信息。

9.根据权利要求8所述的系统,其特征在于,所述状态变更请求为加入房间请求,所述第一房间信息中还包括所述多媒体房间内的客户端列表;

所述业务服务器,具体用于根据所述加入房间请求,将所述第一客户端添加至所述客户端列表中,向所述第一客户端返回所述第一房间信息;

所述第一客户端,具体用于根据所述实时通信服务信息,与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。

10.根据权利要求9所述的系统,其特征在于,所述状态变更请求为离开房间请求;

所述业务服务器,具体用于根据所述离开房间请求,将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;

所述第一客户端,具体用于在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

11.根据权利要求10所述的系统,其特征在于,所述状态变更请求为关闭房间请求;

所述业务服务器,具体用于将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;

所述第一客户端,具体用于在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

12.根据权利要求1所述的系统,其特征在于,所述状态变更请求为角色切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的角色信息;

所述业务服务器,具体用于根据所述角色切换请求,更新所述第一客户端的角色信息,向所述第一客户端返回所述角色切换请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述角色切换请求对应的第二客户端发送所述增量消息。

13.根据权利要求1所述的系统,其特征在于,所述状态变更请求为麦克风状态切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的麦克风状态信息:所述业务服务器,具体用于根据所述麦克风状态切换请求,更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息;

所述第一客户端,具体用于在接收到所述麦克风状态切换确认信息之后,向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。

14.一种信息同步方法,其特征在于,应用于第一客户端,所述方法包括:获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器,以使所述业务服务器向所述第一客户端返回所述状态变更请求的请求结果,并通过长连接向所述多媒体房间内的第二客户端发送第一房间信息的增量消息,并使第二客户端根据所述增量消息更新第二房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

在接收到所述请求结果之后,执行所述状态变更请求对应的操作。

15.根据权利要求14所述的方法,其特征在于,在所述状态变更请求为加入房间请求的情况下,所述业务服务器根据所述加入房间请求,将所述第一客户端添加至客户端列表中,向所述第一客户端返回所述第一房间信息,所述第一房间信息中包括所述多媒体房间内的客户端列表及实时通信服务信息;

所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:根据所述实时通信服务信息,与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。

16.根据权利要求14所述的方法,其特征在于,在所述状态变更请求为离开房间请求的情况下,所述业务服务器根据所述离开房间请求,将所述第一客户端从客户端列表中删除,向所述第一客户端返回离开房间确认信息;

所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:在接收到所述离开房间确认信息之后,向实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

17.根据权利要求16所述的方法,其特征在于,在所述状态变更请求为关闭房间请求的情况下,所述业务服务器将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;

所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

18.根据权利要求14所述的方法,其特征在于,在所述状态变更请求为麦克风状态切换请求的情况下,所述业务服务器根据所述麦克风状态切换请求更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息;

所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:在接收到所述麦克风状态切换确认信息之后,向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。

19.一种信息同步方法,其特征在于,应用于业务服务器,所述方法包括:接收第一客户端发送的针对多媒体房间的状态变更请求;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

根据所述状态变更请求,更新所述多媒体房间的第一房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;

向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息。

20.根据权利要求19所述的方法,其特征在于,所述生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,包括:根据上一条增量消息的版本号,确定当前生成的增量消息的版本号;

通过长连接向所述多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号,以使所述第二客户端在接收到的增量消息的版本号大于第二房间信息的版本号的情况下,根据接收到的增量消息更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号;所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。

21.根据权利要求19所述的方法,其特征在于,所述方法还包括:

在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,判定该第二客户端离开所述多媒体房间,更新所述第一房间信息中的客户端列表,执行所述生成所述第一房间信息的增量消息的步骤。

22.根据权利要求19所述的方法,其特征在于,所述方法还包括:

在接收到任一所述第二客户端发送的房间信息获取请求后,向该第二客户端返回所述第一房间信息,以使所述第二客户端将接收到的第一房间信息存储为新的第二房间信息;

所述第二客户端发送的房间信息获取请求为所述第二客户端按照第四时间间隔,向所述业务服务器发送房间信息获取请求;所述第四时间间隔为大于5分钟的时间间隔;所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。

23.根据权利要求19所述的方法,其特征在于,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,所述方法还包括:接收任一所述第二客户端发送的增量消息获取请求,所述增量消息获取请求携带该第二客户端存储的第二房间信息的版本号;所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;

在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息;

或,在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。

24.根据权利要求19所述的方法,其特征在于,在所述状态变更请求为创建房间请求的情况下,所述方法还包括:所述业务服务器,具体用于根据所述创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息,并向所述第一客户端返回创建房间确认信息。

25.根据权利要求24所述的方法,其特征在于,在所述状态变更请求为加入房间请求的情况下,所述第一房间信息中还包括所述多媒体房间内的客户端列表,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:根据所述加入房间请求,将所述第一客户端添加至所述客户端列表中,向所述第一客户端返回所述第一房间信息,以使所述第一客户端根据所述实时通信服务信息与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。

26.根据权利要求25所述的方法,其特征在于,在所述状态变更请求为离开房间请求的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:根据所述离开房间请求,将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息,以使所述第一客户端向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

27.根据权利要求26所述的方法,其特征在于,在所述状态变更请求为关闭房间请求的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息,以使所述第一客户端向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。

28.根据权利要求19所述的方法,其特征在于,在所述状态变更请求为角色切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的角色信息的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:根据所述角色切换请求,更新所述第一客户端的角色信息,向所述第一客户端返回所述角色切换请求的请求结果;

所述生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,包括:生成所述第一房间信息的增量消息,通过长连接向所述角色切换请求对应的第二客户端发送所述增量消息。

29.根据权利要求19所述的方法,其特征在于,在所述状态变更请求为麦克风状态切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的麦克风状态信息的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:根据所述麦克风状态切换请求,更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息,以使所述第一客户端向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。

30.一种信息同步方法,其特征在于,应用于第二客户端,所述方法包括:接收业务服务器通过长连接发送的第一房间信息的增量消息,所述第一房间信息为所述业务服务器本地存储的多媒体房间的房间信息,所述增量消息为所述业务服务器根据第一客户端发送的状态变更请求更新所述多媒体房间的第一房间信息后生成的;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。

31.根据权利要求30所述的方法,其特征在于,所述根据所述增量消息,更新所述多媒体房间的第二房间信息,包括:在接收到的增量消息的版本号大于所述第二房间信息的版本号的情况下,根据接收到的增量消息,更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号。

32.根据权利要求30所述的方法,其特征在于,所述方法还包括:

按照第一时间间隔,向所述业务服务器发送心跳消息,以使所述业务服务器在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,将该第二客户端从所述第一房间信息的客户端列表中删除,并执行所述生成所述第一房间信息的增量消息的步骤。

33.根据权利要求30所述的方法,其特征在于,所述方法还包括:

按照第三时间间隔,检测与所述业务服务器之间的长连接,在所述长连接断开的情况下,重新与所述业务服务器建立长连接。

34.根据权利要求30所述的方法,其特征在于,所述方法还包括:

按照第四时间间隔,向所述业务服务器发送房间信息获取请求,以使所述业务服务器返回所述第一房间信息;所述第四时间间隔为大于5分钟的时间间隔;

将接收到的第一房间信息存储为新的第二房间信息。

35.根据权利要求30所述的方法,其特征在于,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,所述方法还包括:发送增量消息获取请求,所述增量消息获取请求携带所述第二房间信息的版本号,以使所述业务服务器在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息,或在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。

36.根据权利要求30所述的方法,其特征在于,在更新所述多媒体房间的第二房间信息后,所述方法还包括:根据更新后的第二房间信息执行相应的操作。

37.一种信息同步装置,其特征在于,应用于第一客户端,所述装置包括:获取单元,被配置为执行获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器,以使所述业务服务器向所述第一客户端返回所述状态变更请求的请求结果,并通过长连接向所述多媒体房间内的第二客户端发送第一房间信息的增量消息,并使第二客户端根据所述增量消息更新第二房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

第一接收单元,被配置为执行在接收到所述请求结果之后,执行所述状态变更请求对应的操作。

38.一种信息同步装置,其特征在于,应用于业务服务器,所述装置包括:第二接收单元,被配置为执行接收第一客户端发送的针对多媒体房间的状态变更请求;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

第一更新单元,被配置为执行根据所述状态变更请求,更新所述多媒体房间的第一房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;

发送单元,被配置为执行向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息。

39.一种信息同步装置,其特征在于,应用于第二客户端,所述装置包括:第三接收单元,被配置为执行接收业务服务器通过长连接发送的第一房间信息的增量消息,所述第一房间信息为所述业务服务器本地存储的多媒体房间的房间信息,所述增量消息为所述业务服务器根据第一客户端发送的状态变更请求更新所述多媒体房间的第一房间信息后生成的;所述状态变更请求的获取方式包括所述第一客户端从其他客户端中获取;

第二更新单元,被配置为执行根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。

40.一种电子设备,其特征在于,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现如权利要求14至18或19至29或30至

36任一项所述的信息同步方法。

41.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求14至18或19至29或30至36任一项所述的信息同步方法。

说明书 :

一种信息同步系统、方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及视频直播领域,特别是涉及一种信息同步系统、方法、装置、设备及存储介质。

背景技术

[0002] 在一个多媒体房间内,通常有多个客户端同时在线,客户端在多媒体房间内可以打开麦克风、关闭麦克风或切换角色,还可以离开多媒体房间或关闭多媒体房间,另外,还有其他客户端可以申请加入多媒体房间,等等。在同一多媒体房间内的客户端需要对多媒体房间的状态信息进行同步,以确定多媒体房间内其他客户端的实时状态。
[0003] 目前,通常由客户端定时向服务器发送信息获取请求,从服务器全量拉取并更新多媒体房间的状态信息。但是,一些场景下,服务器可能需要同时为多个多媒体房间提供服务,每个多媒体房间内的客户端数量也可能比较多,因此,服务器会在同一时间内接收到大量的信息获取请求,给服务器造成较大的负载压力,进而可能导致服务器崩溃等问题。

发明内容

[0004] 为了解决相关技术中存在的服务器会在同一时间内接收到大量的信息获取请求,负载压力过大的问题,本公开提供了一种信息同步系统、方法、装置、设备及存储介质,本公开的技术方案如下:
[0005] 根据本公开实施例的第一方面,提供了一种信息同步系统,所述系统包括:
[0006] 第一客户端,用于获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器;
[0007] 所述业务服务器,用于根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;
[0008] 所述第一客户端,还用于在接收到所述请求结果之后,执行所述状态变更请求对应的操作;
[0009] 所述第二客户端,用于根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。
[0010] 可选地,所述业务服务器,具体用于根据上一条增量消息的版本号,确定当前生成的增量消息的版本号,通过长连接向所述多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号;
[0011] 所述第二客户端,具体用于在接收到的增量消息的版本号大于所述第二房间信息的版本号的情况下,根据接收到的增量消息,更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号。
[0012] 可选地,所述第二客户端,还用于按照第一时间间隔,向所述业务服务器发送心跳消息;
[0013] 所述业务服务器,还用于在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,判定该第二客户端离开所述多媒体房间,更新所述第一房间信息中的客户端列表,执行所述生成所述第一房间信息的增量消息的步骤。
[0014] 可选地,所述第二客户端,还用于按照第三时间间隔,检测与所述业务服务器之间的长连接,在所述长连接断开的情况下,重新与所述业务服务器建立长连接。
[0015] 可选地,所述第二客户端,还用于按照第四时间间隔,向所述业务服务器发送房间信息获取请求;
[0016] 所述业务服务器,还用于在接收到所述房间信息获取请求后,向所述第二客户端返回所述第一房间信息;
[0017] 所述第二客户端,还用于将接收到的第一房间信息存储为新的第二房间信息。
[0018] 可选地,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,[0019] 所述第二客户端,还用于发送增量消息获取请求,所述增量消息获取请求携带所述第二房间信息的版本号;
[0020] 所述业务服务器,还用于在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息;或,在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。
[0021] 可选地,所述第二客户端,还用于在更新所述多媒体房间的第二房间信息后,根据更新后的第二房间信息执行相应的操作。
[0022] 可选地,所述状态变更请求为创建房间请求;
[0023] 所述业务服务器,具体用于根据所述创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息,并向所述第一客户端返回创建房间确认信息。
[0024] 可选地,所述状态变更请求为加入房间请求,所述第一房间信息中还包括所述多媒体房间内的客户端列表;
[0025] 所述业务服务器,具体用于根据所述加入房间请求,将所述第一客户端添加至所述客户端列表中,向所述第一客户端返回所述第一房间信息;
[0026] 所述第一客户端,具体用于根据所述实时通信服务信息,与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。
[0027] 可选地,所述状态变更请求为离开房间请求;
[0028] 所述业务服务器,具体用于根据所述离开房间请求,将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;
[0029] 所述第一客户端,具体用于在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0030] 可选地,所述状态变更请求为关闭房间请求;
[0031] 所述业务服务器,具体用于将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;
[0032] 所述第一客户端,具体用于在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0033] 可选地,所述状态变更请求为角色切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的角色信息;
[0034] 所述业务服务器,具体用于根据所述角色切换请求,更新所述第一客户端的角色信息,向所述第一客户端返回所述角色切换请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述角色切换请求对应的第二客户端发送所述增量消息。
[0035] 可选地,所述状态变更请求为麦克风状态切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的麦克风状态信息:
[0036] 所述业务服务器,具体用于根据所述麦克风状态切换请求,更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息;
[0037] 所述第一客户端,具体用于在接收到所述麦克风状态切换确认信息之后,向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。
[0038] 根据本公开实施例的第二方面,提供了一种信息同步方法,应用于第一客户端,所述方法包括:
[0039] 获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器,以使所述业务服务器向所述第一客户端返回所述状态变更请求的请求结果,并通过长连接向所述多媒体房间内的第二客户端发送第一房间信息的增量消息,并使第二客户端根据所述增量消息更新第二房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;
[0040] 在接收到所述请求结果之后,执行所述状态变更请求对应的操作。
[0041] 可选地,在所述状态变更请求为加入房间请求的情况下,所述业务服务器根据所述加入房间请求,将所述第一客户端添加至所述客户端列表中,向所述第一客户端返回所述第一房间信息,所述第一房间信息中包括所述多媒体房间内的客户端列表及实时通信服务信息;
[0042] 所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:
[0043] 根据所述实时通信服务信息,与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。
[0044] 可选地,在所述状态变更请求为离开房间请求的情况下,所述业务服务器根据所述离开房间请求,将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;
[0045] 所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:
[0046] 在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0047] 可选地,在所述状态变更请求为关闭房间请求的情况下,所述业务服务器将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息;
[0048] 所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:
[0049] 在接收到所述离开房间确认信息之后,向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0050] 可选地,在所述状态变更请求为麦克风状态切换请求的情况下,所述业务服务器根据所述麦克风状态切换请求更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息;
[0051] 所述在接收到所述请求结果之后,执行所述状态变更请求对应的操作,包括:
[0052] 在接收到所述麦克风状态切换确认信息之后,向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。
[0053] 根据本公开实施例的第三方面,提供了一种信息同步方法,应用于业务服务器,所述方法包括:
[0054] 接收第一客户端发送的针对多媒体房间的状态变更请求;
[0055] 根据所述状态变更请求,更新所述多媒体房间的第一房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;
[0056] 向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息。
[0057] 可选地,所述生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,包括:
[0058] 根据上一条增量消息的版本号,确定当前生成的增量消息的版本号;
[0059] 通过长连接向所述多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号,以使所述第二客户端在接收到的增量消息的版本号大于所述第二房间信息的版本号的情况下,根据接收到的增量消息更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号。
[0060] 可选地,所述方法还包括:
[0061] 在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,判定该第二客户端离开所述多媒体房间,更新所述第一房间信息中的客户端列表,执行所述生成所述第一房间信息的增量消息的步骤。
[0062] 可选地,所述方法还包括:
[0063] 在接收到任一所述第二客户端发送的房间信息获取请求后,向该第二客户端返回所述第一房间信息,以使所述第二客户端将接收到的第一房间信息存储为新的第二房间信息。
[0064] 可选地,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,所述方法还包括:
[0065] 接收任一所述第二客户端发送的增量消息获取请求,所述增量消息获取请求携带该第二客户端存储的第二房间信息的版本号;
[0066] 在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息;
[0067] 或,在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。
[0068] 可选地,在所述状态变更请求为创建房间请求的情况下,所述方法还包括:
[0069] 所述业务服务器,具体用于根据所述创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息,并向所述第一客户端返回创建房间确认信息。
[0070] 可选地,在所述状态变更请求为加入房间请求的情况下,所述第一房间信息中还包括所述多媒体房间内的客户端列表,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:
[0071] 根据所述加入房间请求,将所述第一客户端添加至所述客户端列表中,向所述第一客户端返回所述第一房间信息,以使所述第一客户端根据所述实时通信服务信息与实时通信服务器建立连接,以使所述实时通信服务器提供多媒体数据的采集和推流服务。
[0072] 可选地,在所述状态变更请求为离开房间请求的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:
[0073] 根据所述离开房间请求,将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息,以使所述第一客户端向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0074] 可选地,在所述状态变更请求为关闭房间请求的情况下,所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:
[0075] 将所述第一客户端从所述客户端列表中删除,向所述第一客户端返回离开房间确认信息,以使所述第一客户端向所述实时通信服务器发送断开连接请求,以使所述实时通信服务器断开与所述第一客户端的连接。
[0076] 可选地,在所述状态变更请求为角色切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的角色信息的情况下,
[0077] 所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:
[0078] 根据所述角色切换请求,更新所述第一客户端的角色信息,向所述第一客户端返回所述角色切换请求的请求结果;
[0079] 所述生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息,包括:
[0080] 生成所述第一房间信息的增量消息,通过长连接向所述角色切换请求对应的第二客户端发送所述增量消息。
[0081] 可选地,在所述状态变更请求为麦克风状态切换请求,所述第一房间信息中还包括所述多媒体房间内每个客户端的麦克风状态信息的情况下,
[0082] 所述根据所述状态变更请求,更新所述多媒体房间的第一房间信息,向所述第一客户端返回所述状态变更请求的请求结果,包括:
[0083] 根据所述麦克风状态切换请求,更新所述第一客户端的麦克风状态信息,向所述第一客户端返回麦克风状态切换确认信息,以使所述第一客户端向实时通信服务器发送实时通信服务请求,以使所述实时通信服务器开始或停止多媒体数据的采集和推流。
[0084] 根据本公开实施例的第四方面,提供了一种信息同步方法,应用于第二客户端,所述方法包括:
[0085] 接收业务服务器通过长连接发送的第一房间信息的增量消息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述增量消息为所述业务服务器根据第一客户端发送的状态变更请求更新所述多媒体房间的第一房间信息后生成的;
[0086] 根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。
[0087] 可选地,所述根据所述增量消息,更新所述多媒体房间的第二房间信息,包括:
[0088] 在接收到的增量消息的版本号大于所述第二房间信息的版本号的情况下,根据接收到的增量消息,更新所述第二房间信息,并将接收到的增量消息的版本号作为更新后的所述第二房间信息的版本号。
[0089] 可选地,所述方法还包括:
[0090] 按照第一时间间隔,向所述业务服务器发送心跳消息,以使所述业务服务器在第二时间间隔内未接收到任一所述第二客户端的心跳消息的情况下,将该第二客户端从所述第一房间信息的客户端列表中删除,并执行所述生成所述第一房间信息的增量消息的步骤。
[0091] 可选地,所述方法还包括:
[0092] 按照第三时间间隔,检测与所述业务服务器之间的长连接,在所述长连接断开的情况下,重新与所述业务服务器建立长连接。
[0093] 可选地,所述方法还包括:
[0094] 按照第四时间间隔,向所述业务服务器发送房间信息获取请求,以使所述业务服务器返回所述第一房间信息;
[0095] 将接收到的第一房间信息存储为新的第二房间信息。
[0096] 可选地,在所述业务服务器与所述第二客户端之间的长连接断开的情况下,所述方法还包括:
[0097] 发送增量消息获取请求,所述增量消息获取请求携带所述第二房间信息的版本号,以使所述业务服务器在任一增量消息的版本号大于所述增量消息获取请求携带的版本号的情况下,向所述第二客户端返回该增量消息,或在增量消息的版本号均不大于所述增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向所述第二客户端返回增量消息获取结果。
[0098] 可选地,在更新所述多媒体房间的第二房间信息后,所述方法还包括:
[0099] 根据更新后的第二房间信息执行相应的操作。
[0100] 根据本公开实施例的第五方面,提供了一种信息同步装置,应用于第一客户端,所述装置包括:
[0101] 获取单元,被配置为执行获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器,以使所述业务服务器向所述第一客户端返回所述状态变更请求的请求结果,并通过长连接向所述多媒体房间内的第二客户端发送第一房间信息的增量消息,并使第二客户端根据所述增量消息更新第二房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;
[0102] 第一接收单元,被配置为执行在接收到所述请求结果之后,执行所述状态变更请求对应的操作。
[0103] 根据本公开实施例的第六方面,提供了一种信息同步装置,应用于业务服务器,所述装置包括:
[0104] 第二接收单元,被配置为执行接收第一客户端发送的针对多媒体房间的状态变更请求;
[0105] 第一更新单元,被配置为执行根据所述状态变更请求,更新所述多媒体房间的第一房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;
[0106] 发送单元,被配置为执行向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息。
[0107] 根据本公开实施例的第七方面,提供了一种信息同步装置,应用于第二客户端,所述装置包括:
[0108] 第三接收单元,被配置为执行接收业务服务器通过长连接发送的第一房间信息的增量消息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述增量消息为所述业务服务器根据第一客户端发送的状态变更请求更新所述多媒体房间的第一房间信息后生成的;
[0109] 第二更新单元,被配置为执行根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。
[0110] 根据本公开实施例的第八方面,还提供了一种电子设备,包括:
[0111] 处理器;
[0112] 用于存储所述处理器可执行指令的存储器;
[0113] 其中,所述处理器被配置为执行所述指令,以实现第二或第三方面所述的方法。
[0114] 根据本公开实施例的第九方面,还提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行第二或第三方面所述的方法。
[0115] 根据本公开实施例的第十方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现第二或第三方面所述的方法。
[0116] 本公开实施例提供的技术方案中,第一客户端获取针对多媒体房间的状态变更请求,将状态变更请求发送至业务服务器;业务服务器根据状态变更请求,更新多媒体房间的第一房间信息,向第一客户端返回状态变更请求的请求结果,并生成第一房间信息的增量消息,通过长连接向多媒体房间内的第二客户端发送增量消息,第一房间信息为业务服务器本地存储的多媒体房间的房间信息,第二客户端为多媒体房间内除第一客户端之外的其他客户端;第一客户端在接收到请求结果之后,执行状态变更请求对应的操作;第二客户端根据增量消息,更新多媒体房间的第二房间信息,第二房间信息为第二客户端本地存储的多媒体房间的房间信息。
[0117] 这样,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。

附图说明

[0118] 图1是根据一示例性实施例示出的一种信息同步系统的交互示意图;
[0119] 图2是根据一示例性实施例示出的一种多媒体房间内各角色的切换逻辑示意图;
[0120] 图3是根据一示例性实施例示出的一种应用于第一客户端的方法的流程图;
[0121] 图4是根据一示例性实施例示出的一种应用于业务服务器的方法的流程图;
[0122] 图5是根据一示例性实施例示出的一种应用于第二客户端的方法的流程图;
[0123] 图6是根据一示例性实施例示出的一种应用于第一客户端的装置的框图;
[0124] 图7是根据一示例性实施例示出的一种应用于业务服务器的装置的框图;
[0125] 图8是根据一示例性实施例示出的一种应用于第二客户端的装置的框图;
[0126] 图9是根据一示例性实施例示出的一种电子设备的结构示意图;
[0127] 图10是根据一示例性实施例示出的一种装置的框图。

具体实施方式

[0128] 为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0129] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0130] 为了解决相关技术中存在的服务器会在同一时间内接收到大量的信息获取请求,负载压力过大的问题,本公开实施例提供了一种信息同步系统、方法、装置、设备及存储介质。
[0131] 第一方面,将对本公开实施例提供的一种信息同步系统进行详细介绍。
[0132] 如图1所示,本公开实施例提供的一种信息同步系统的系统交互图,在该信息同步系统中,包括第一客户端、业务服务器和第二客户端。
[0133] 其中,业务服务器即为WebServer,负责维护多媒体房间的状态和所有上行消息接受和下行消息分发,第一客户端和第二客户端即为Client,Client可以与用户进行交互。
[0134] 为了便于描述,在本公开中,将发送状态变更请求的客户端称为第一客户端,第一客户端可以是多媒体房间内的客户端,也可以是未参与多媒体房间的客户端;将接收业务服务器发送的增量消息的客户端称为第二客户端,第二客户端包括多媒体房间内的所有客户端或部分客户端。第一客户端和第二客户端可以是相同的设备,也可以是不同的设备,具体不做限定。
[0135] 本公开中,第一客户端、业务服务器和第二客户端之间的交互过程可以包括如下步骤:
[0136] 在S101中,第一客户端获取针对多媒体房间的状态变更请求,将状态变更请求发送至业务服务器。
[0137] 其中,多媒体房间可以是视频房间,也可以是语音房间,具体不做限定。状态变更请求可以是第一客户端通过与用户的交互,响应于用户的状态变更操作生成的,或者,也可以是第一客户端从其他用户设备中获取的,或按照预设规则自动生成的。
[0138] 一种实现方式中,针对多媒体房间的状态变更请求可以是对多媒体房间内的客户端列表的变更请求,比如,可以是将任一客户端加入多媒体房间的请求(JoinRoom),或者,可以是任一客户端从多媒体房间内离开的请求(LeaveRoom),该客户端可以是第一客户端,也可以是其他的客户端,还可以是关闭多媒体房间的请求(CloseRoom),具体不做限定。
[0139] 另外,在多媒体房间内,客户端可以划分为不同的角色,每个角色都具有不同的权限,举例而言,多媒体房间内的角色可以包括主持人(Host)、发言人(Speaker)、听众(Audience)和被关注人(FollowedBySpeakers)等等,其中,主持人具有发言、邀请观众发言、将其他主持人或发言人降级为听众等管理权限,发言人具有发言权限,听众没有发言权限,只能听发言人或主持人发言,但是具有举手要求发言的权限,被关注人即为被主持人和发言人关注的人,被关注人没有发言权限,只能听发言人或主持人发言,但是具有举手要求发言的权限,在界面显示上与听众有区别。
[0140] 如图2所示,为多媒体房间内各角色的切换逻辑示意图。其中,听众可以举手发言,主持人从举手发言的听众中选择一个或多个听众邀请发言,或者,主持人也可以直接选择任意一个或多个听众邀请发言,被邀请发言的听众确认后即可成为发言人。发言人可以自己申请或被主持人切换为听众。主持人可以邀请发言人成为主持人,被邀请的发言人确认后即可成为主持人;或者,当任一主持人离开多媒体房间后,如果多媒体房间内没有其他主持人,那么,可以随机或按照发言顺序选择发言人成为主持人。另外,任一主持人可以将其他主持人切换为听众,或者,在多媒体房间内有其他主持人的情况下,将自己切换为听众。
[0141] 一种实现方式中,针对多媒体房间的状态变更请求也可以是任一客户端在多媒体房间内的角色的切换请求。比如,举手发言请求(RaiseHand)、取消举手发言请求(UnRaiseHand)、邀请发言请求(InviteToSpeaker)、接受发言邀请请求(AcceptToSpeaker)、拒绝发言邀请请求(RejectToSpeaker)、主持人邀请请求(InviteToHost)、接受主持人邀请请求(AcceptToHost)、拒绝主持人邀请请求(RejectToHost)、将发言人降为听众的请求(RemoveSpeaker)以及将主持人降为听众的请求(RemoveHost)。
[0142] 另一种实现方式中,针对多媒体房间的状态变更请求还可以是麦克风状态切换请求,比如,打开麦克风请求(OpenMic)和关闭麦克风请求(CloseMic)。
[0143] 在S102中,业务服务器根据状态变更请求,更新多媒体房间的第一房间信息。
[0144] 其中,第一房间信息为业务服务器本地存储的多媒体房间的房间信息。房间信息内可以包括多媒体房间内的客户端列表、每个客户端的角色信息以及多媒体房间的基本信息等。
[0145] 举例而言,客户端列表可以包括如下一项或多项信息:被关注人列表(followedBySpeakers)、主持人列表(hosts)、听众列表(listeners)、发言人列表(speakers)。客户端列表中每个客户端的信息可以包括如下一项或多项信息:头像(avatar)、昵称(nickname)、id(userId)、麦克风状态信息(micOpen)以及角色信息,其中,角色信息包括当前角色信息(currentUserRegion)、举手状态信息(handRaise)以及发言邀请状态信息(invitedToSpeaker)。基本信息可以包括房间id(channelId)、房间标题(title)、实时通信房间标识(Real‑time Communications Token)和视频云服务推流地址(Live Server push Stream Url)。
[0146] 其中,实时通信房间标识用于从实时通信服务器(RTCServer)中查询该多媒体房间对应的实时通信房间,RTCServer用于提供实时通信收发服务,负责多媒体房间内的多媒体通信沟通以及将多媒体数据推流给视频云服务推流地址对应的视频云服务器(LiveServer),LiveServer用于接受实时多媒体数据流,从而实现实时审核和旁路录制。
[0147] 业务服务器根据状态变更请求,可以对所存储的多媒体房间的第一房间信息进行更新。
[0148] 举例而言,若状态变更请求为第一客户端的加入房间请求,那么,业务服务器可以将第一客户端添加至客户端列表中,实现对第一房间信息的更新;若状态变更请求为第一客户端的离开房间请求,那么,业务服务器可以将第一客户端从客户端列表中删除,实现对第一房间信息的更新;若状态变更请求为关闭房间请求,那么,业务服务器可以将第一客户端从客户端列表中删除,实现对第一房间信息的更新。
[0149] 或者,若状态变更请求为角色切换请求,那么,业务服务器可以根据角色切换请求,更新第一客户端的角色信息。比如,角色切换请求可以为举手发言请求或取消举手发言请求,对应的,可以更新第一客户端的举手状态信息;角色切换请求可以为邀请发言请求,对应的,可以更新第一客户端的发言邀请状态信息;角色切换请求可以为主持人邀请请求,对应的,可以更新第一客户端的主持人邀请状态信息;角色切换请求可以为接受发言邀请请求、拒绝发言邀请请求、接受主持人邀请请求或拒绝主持人邀请请求,对应的,可以更新第一客户端的当前角色信息;角色切换请求可以为将发言人降为听众的请求或将主持人降为听众的请求,对应的,可以更新发言人或主持人的当前角色信息,等等。
[0150] 另外,若状态变更请求为麦克风状态切换请求,那么,业务服务器可以根据麦克风状态切换请求,更新第一客户端的麦克风状态信息。比如,麦克风状态切换请求可以为打开麦克风请求或关闭麦克风请求。
[0151] 一种实现方式中,状态变更请求为创建房间请求,那么,业务服务器可以根据创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息。
[0152] 在S103中,业务服务器向第一客户端返回状态变更请求的请求结果。
[0153] 业务服务器接收到状态变更请求之后,可以向第一客户端返回状态变更请求的请求结果,请求结果用于只适合第一客户端发送的状态变更请求是否请求成功。
[0154] 举例而言,若状态变更请求为创建房间请求,那么,业务服务器返回的请求结果可以为创建房间确认信息,其中,在业务服务器创建多媒体房间之后,第一客户端不会自动加入所创建的多媒体房间,如果第一客户端需要加入该多媒体房间,可以进一步向业务服务器发送加入该多媒体房间的加入房间请求。
[0155] 若状态变更请求为加入房间请求,那么,业务服务器返回的请求结果可以为第一房间信息;若状态变更请求为离开房间请求,那么,业务服务器返回的请求结果可以为离开房间确认信息;若状态变更请求为关闭房间请求,那么,业务服务器返回的请求结果可以为离开房间确认信息;若状态变更请求为角色切换请求,那么,业务服务器返回的请求结果可以为角色切换请求的请求结果;若状态变更请求为麦克风状态切换请求,那么,业务服务器返回的请求结果可以为麦克风状态切换确认信息。
[0156] 在S104中,第一客户端在接收到请求结果之后,执行状态变更请求对应的操作。
[0157] 在本步骤中,根据状态变更请求以及接收到的请求结果的不同,第一客户端所执行的操作也有所不同。
[0158] 举例而言,在状态变更请求为加入房间请求的情况下,若第一客户端接收到了业务服务器返回的第一房间信息,表示加入多媒体房间的请求成功,那么,第一客户端可以根据第一房间信息中的实时通信服务信息,与实时通信服务器建立连接,以使实时通信服务器提供多媒体数据的采集和推流服务;若第一客户端未接收到业务服务器返回的第一房间信息,表示加入多媒体房间的请求失败,那么,第一客户端可以重新向业务服务器发送加入房间请求,或提示用户更换多媒体房间,具体不做限定。
[0159] 在状态变更请求为离开房间请求的情况下,若第一客户端接收到了业务服务器返回的离开房间确认信息,表示离开多媒体房间的请求成功,那么,第一客户端可以向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接;若第一客户端接收到了业务服务器返回的离开房间失败信息,表示离开多媒体房间的请求失败,那么,第一客户端可以重新向业务服务器发送离开房间请求,或提示用户离开多媒体房间失败,具体不做限定。
[0160] 在状态变更请求为关闭房间请求的情况下,若第一客户端接收到业务服务器返回的离开房间确认信息,表示关闭多媒体房间的请求成功,那么,第一客户端可以向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接;若第一客户端接收到了业务服务器返回的离开房间失败信息,表示关闭多媒体房间的请求失败,那么,第一客户端可以重新向业务服务器发送关闭房间请求,或提示用户关闭多媒体房间失败,具体不做限定。
[0161] 在状态变更请求为麦克风状态切换请求的情况下,若第一客户端接收到业务服务器返回的麦克风状态切换确认信息,代表麦克风状态切换成功,那么,第一客户端可以向实时通信服务器发送实时通信服务请求,以使实时通信服务器开始或停止多媒体数据的采集和推流;若第一客户端接收到了业务服务器返回的麦克风状态切换失败信息,表示麦克风状态切换的请求失败,那么,第一客户端可以重新向业务服务器发送麦克风状态切换请求,或提示用户麦克风状态切换失败,具体不做限定。
[0162] 一种实现方式中,状态变更请求为角色切换请求,不同的角色切换请求对应的操作也有所不同。举例而言,当第一客户端发送的角色切换请求为接受发言邀请请求时,若请求成功,第一客户端可以请求实时通信服务器的多媒体数据的采集和推流服务。
[0163] 在S105中,业务服务器生成第一房间信息的增量消息,通过长连接向多媒体房间内的第二客户端发送增量消息。
[0164] 其中,长连接是指可以连续发送多个数据包的连接,可以负责下行消息发送以及超时断开的通知,比如,可以是KwaiLink长连接。也就是说,业务服务器在第一房间信息有变化时,生成增量消息,进而通过长连接向第二客户端发送增量消息,如果第一房间信息没有发生变化,则业务服务器不发送增量消息。
[0165] 这样,相比于相关技术中第二客户端定期向业务服务器发送数据获取请求的方式,可以节省资源,减少第二客户端不必要的向业务服务器发送的请求,降低业务服务器的处理压力。
[0166] 增量消息是指用于指示第一房间信息的增量变化的消息,也就是说,根据增量消息,可以确定多媒体房间的房间信息发生了哪些变化,进而使得接收到增量消息的设备可以对自身存储的多媒体房间的房间信息进行更新,更新后的房间信息与业务服务器中存储的同一多媒体房间的房间信息同步。
[0167] 一种实现方式中,业务服务器可以根据上一条增量消息的版本号,确定当前生成的增量消息的版本号,进而,通过长连接向多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号,这样,第二客户端在接收到的增量消息的版本号大于第二房间信息的版本号的情况下,对接收到的增量消息进行处理,并将接收到的增量消息的版本号作为更新后的第二房间信息的版本号。
[0168] 其中,增量消息的版本号可以表示为roomVersion,增量消息的版本号可以是纯数字的形式,比如,在上一条增量消息的版本号的基础上加一,得到新的版本号,或者,也可以按照预设的规则对上一条增量消息的版本号进行处理,计算得到新的版本号,具体不做限定。
[0169] 这样,在业务服务器与第二客户端之间的长连接存在网络延迟的情况下,第二客户端根据增量消息的版本号对最新的增量消息进行处理,可以减少前后两条增量消息接收顺序导致乱序的可能性。
[0170] 在S106中,第二客户端根据增量消息,更新多媒体房间的第二房间信息。
[0171] 其中,第二房间信息为第二客户端本地存储的多媒体房间的房间信息。第二房间信息中可以包括第一房间信息的全部信息,也可以仅包括第一房间信息中的部分信息,也可以根据第二客户端对应的角色的不同,包括第一房间信息中的不同信息,具体不做限定。
[0172] 一种实现方式中,第二客户端在更新多媒体房间的第二房间信息后,可以根据更新后的第二房间信息执行相应的操作。举例而言,如果第二房间信息中更新了举手发言列表,那么,第二客户端可以从举手发言列表中选择第一客户端,向业务服务器发送针对被选择的第一客户端的邀请发言请求。
[0173] 一种实现方式中,第二客户端可以按照第一时间间隔,向业务服务器发送心跳消息,用于通知业务服务器第二客户端的在线状态,这样,业务服务器如果接收到心跳消息,就可以判定发送心跳消息的第二客户端目前为在线状态,而在第二时间间隔内未接收到任一第二客户端的心跳消息的情况下,业务服务器可以判定该第二客户端离开多媒体房间,进而可以更新第一房间信息中的客户端列表,执行生成第一房间信息的增量消息的步骤。
[0174] 其中,第一时间间隔也就是心跳发送间隔时间(heartbeatIntervalMs),可以是业务服务器全局预设的时间,也可以包括在多媒体房间的房间信息中,根据不同的多媒体房间进行设定。第二时间间隔不小于第一时间间隔,可以是预设的时间,也可以是根据第一时间间隔确定的时间,具体不做限定。
[0175] 这样,在任一第二客户端离开多媒体房间的情况下,业务服务器可以及时对客户端列表进行更新,在下发增量消息时,减少增量消息发送的次数,进一步降低业务服务器的处理压力。
[0176] 一种实现方式中,第二客户端还可以按照第三时间间隔,检测与业务服务器之间的长连接,在长连接断开的情况下,重新与业务服务器建立长连接。其中,第三时间间隔可以与第一时间间隔相同,比如,第二客户端可以利用向业务服务器发送心跳消息的机会,检测与业务服务器之间的长连接,或者,第三时间间隔也可以与第一时间间隔不同,比如,第二客户端也可以单独向业务服务器发送长连接检测请求,具体不做限定。这样,可以在长连接断开的情况下及时恢复连接,从而增强长连接的稳定性。
[0177] 另外,第二客户端还可以按照第四时间间隔,向业务服务器发送房间信息获取请求,业务服务器在接收到房间信息获取请求后,向第二客户端返回第一房间信息,第二客户端将接收到的第一房间信息存储为新的第二房间信息。
[0178] 也就是说,第二客户端可以定期向业务服务器拉取多媒体房间的全量房间信息,在本申请中,第四时间间隔比较长,可以表示为syncFullIntervalMs,通常,第四时间间隔大于5分钟,这样既能保证第二客户端中第二房间信息的准确性,又不会增加业务服务器的处理压力。
[0179] 一种实现方式中,在业务服务器与第二客户端之间的长连接断开的情况下,第二客户端可以发送增量消息获取请求,增量消息获取请求携带第二房间信息的版本号,业务服务器在任一增量消息的版本号大于增量消息获取请求携带的版本号的情况下,向第二客户端返回该增量消息,或,在增量消息的版本号均不大于增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向第二客户端返回增量消息获取结果。
[0180] 也就是说,业务服务器接收到增量消息获取请求后,不立即返回增量消息获取结果,直到第一房间信息发生变化,产生了新的增量消息的版本号,或者直到第五时间间隔之后,才向第二客户端返回增量消息获取结果。其中,第五时间间隔是一段较长的时间,可以是1分钟。这样,在业务服务器与第二客户端之间的长连接断开的情况下,既能减少业务服务器频繁返回数据造成的请求压力,也能实现房间数据的实时性和准确性。
[0181] 在本申请中,每个客户端的角色变化情况可以包括但不限于如下几种:
[0182] 第一种,从听众变为发言人:听众客户端向业务服务器发送举手发言请求,业务服务器更新第一房间信息后,通过长连接将增量消息下发消息给主持人客户端,主持人客户端发送邀请发言请求到业务服务器,业务服务器再通过长连接下发增量消息给听众客户端,听众客户端向业务服务器发送接受邀请的请求,请求成功后请求RTCServer开始录音和推流,同时业务服务器还通过长连接下发增量消息给其他客户端,更新听众角色的变化。或者,也可以由主持人客户端直接发送邀请发言请求到业务服务器,具体不做限定。
[0183] 第二种,从发言人变为主持人:主持人客户端发送针对发言人客户端的邀请成为主持人请求到业务服务器,业务服务器通过长连接下发增量消息给发言人客户端,发言人客户端向业务服务器发送接受邀请的请求,业务服务器通过长连接下发增量消息给其他客户端更新发言人客户端角色的变化。
[0184] 第三种,从主持人变为听众:主持人客户端发送将任一客户端降为听众的请求到业务服务器,业务服务器更新第一房间信息后,再通过长连接下发增量消息给第二客户端更新该客户端角色的变化。
[0185] 第四种,从发言人变为听众:一种情况下,发言人客户端发送将自己降为听众的请求到业务服务器,业务服务器更新第一房间信息后再通过长连接下发增量消息给其他客户端更新发言人客户端角色的变化;另一种情况下,主持人客户端发送将发言人客户端降为听众的请求到业务服务器,业务服务器更新第一房间信息后再通知长连接下发增量消息给其他客户端,更新发言人客户端角色的变化。
[0186] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0187] 第二方面,将对本公开实施例提供的一种应用于第一客户端的信息同步方法进行详细介绍。
[0188] 如图3所示,本公开实施例提供的一种应用于第一客户端的信息同步方法,包括如下步骤:
[0189] 在S201中,获取针对多媒体房间的状态变更请求,将状态变更请求发送至业务服务器。
[0190] 这样,业务服务器可以向第一客户端返回状态变更请求的请求结果,并通过长连接向多媒体房间内的第二客户端发送第一房间信息的增量消息。
[0191] 第二客户端可以根据增量消息更新第二房间信息。其中,第一房间信息为业务服务器本地存储的多媒体房间的房间信息,第二客户端为多媒体房间内除第一客户端之外的其他客户端,第二房间信息为第二客户端本地存储的多媒体房间的房间信息。
[0192] 在S202中,在接收到请求结果之后,执行状态变更请求对应的操作。
[0193] 一种实现方式中,在状态变更请求为加入房间请求的情况下,业务服务器可以根据加入房间请求,将第一客户端添加至客户端列表中,向第一客户端返回第一房间信息。其中,第一房间信息中包括多媒体房间内的客户端列表及实时通信服务信息。这样,第一客户端可以根据实时通信服务信息,与实时通信服务器建立连接,以使实时通信服务器提供多媒体数据的采集和推流服务。
[0194] 一种实现方式中,在状态变更请求为离开房间请求的情况下,业务服务器可以根据离开房间请求,将第一客户端从客户端列表中删除,向第一客户端返回离开房间确认信息。这样,第一客户端可以在接收到离开房间确认信息之后,向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接。
[0195] 一种实现方式中,在状态变更请求为关闭房间请求的情况下,业务服务器可以将第一客户端从客户端列表中删除,向第一客户端返回离开房间确认信息。这样,第一客户端可以在接收到离开房间确认信息之后,向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接。
[0196] 一种实现方式中,在状态变更请求为麦克风状态切换请求的情况下,业务服务器可以根据麦克风状态切换请求更新第一客户端的麦克风状态信息,向第一客户端返回麦克风状态切换确认信息。这样,第一客户端可以在接收到麦克风状态切换确认信息之后,向实时通信服务器发送实时通信服务请求,以使实时通信服务器开始或停止多媒体数据的采集和推流。
[0197] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0198] 第三方面,将对本公开实施例提供的一种应用于业务服务器的信息同步方法进行详细介绍。
[0199] 如图4所示,本公开实施例提供的一种应用于业务服务器的信息同步方法,包括如下步骤:
[0200] 在S301中,接收第一客户端发送的针对多媒体房间的状态变更请求。
[0201] 在S302中,根据状态变更请求,更新多媒体房间的第一房间信息,第一房间信息为业务服务器本地存储的多媒体房间的房间信息。
[0202] 一种实现方式中,在状态变更请求为创建房间请求的情况下,业务服务器可以根据创建房间请求,生成多媒体房间的基本信息,并向实时通信服务器请求实时通信服务信息,得到第一房间信息,并向第一客户端返回创建房间确认信息。
[0203] 一种实现方式中,在状态变更请求为加入房间请求的情况下,第一房间信息中还包括多媒体房间内的客户端列表,业务服务器可以根据加入房间请求,将第一客户端添加至客户端列表中,向第一客户端返回第一房间信息,以使第一客户端根据实时通信服务信息与实时通信服务器建立连接,以使实时通信服务器提供多媒体数据的采集和推流服务。
[0204] 一种实现方式中,在状态变更请求为离开房间请求的情况下,业务服务器可以根据离开房间请求,将第一客户端从客户端列表中删除,向第一客户端返回离开房间确认信息,以使第一客户端向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接。
[0205] 一种实现方式中,在状态变更请求为关闭房间请求的情况下,业务服务器可以将第一客户端从客户端列表中删除,向第一客户端返回离开房间确认信息,以使第一客户端向实时通信服务器发送断开连接请求,以使实时通信服务器断开与第一客户端的连接。
[0206] 一种实现方式中,在状态变更请求为角色切换请求,第一房间信息中还包括多媒体房间内每个客户端的角色信息的情况下,业务服务器可以根据角色切换请求,更新第一客户端的角色信息,向第一客户端返回角色切换请求的请求结果;进一步地,业务服务器可以仅向角色切换请求对应的第二客户端发送增量消息。
[0207] 一种实现方式中,在状态变更请求为麦克风状态切换请求,第一房间信息中还包括多媒体房间内每个客户端的麦克风状态信息的情况下,业务服务器可以根据麦克风状态切换请求,更新第一客户端的麦克风状态信息,向第一客户端返回麦克风状态切换确认信息,以使第一客户端向实时通信服务器发送实时通信服务请求,以使实时通信服务器开始或停止多媒体数据的采集和推流。
[0208] 在S303中,向第一客户端返回状态变更请求的请求结果,并生成第一房间信息的增量消息,通过长连接向多媒体房间内的第二客户端发送增量消息,第二客户端为多媒体房间内除第一客户端之外的其他客户端。
[0209] 一种实现方式中,业务服务器可以根据上一条增量消息的版本号,确定当前生成的增量消息的版本号,进而,通过长连接向多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号,这样,第二客户端在接收到的增量消息的版本号大于第二房间信息的版本号的情况下,对接收到的增量消息进行处理,并将接收到的增量消息的版本号作为更新后的第二房间信息的版本号。
[0210] 其中,增量消息的版本号可以表示为roomVersion,增量消息的版本号可以是纯数字的形式,比如,在上一条增量消息的版本号的基础上加一,得到新的版本号,或者,也可以按照预设的规则对上一条增量消息的版本号进行处理,计算得到新的版本号,具体不做限定。
[0211] 这样,在业务服务器与第二客户端之间的长连接存在网络延迟的情况下,第二客户端根据增量消息的版本号对最新的增量消息进行处理,可以减少前后两条增量消息接收顺序导致乱序的可能性。
[0212] 一种实现方式中,第二客户端可以按照第一时间间隔,向业务服务器发送心跳消息,用于通知业务服务器第二客户端的在线状态,这样,业务服务器如果接收到心跳消息,就可以判定发送心跳消息的第二客户端目前为在线状态,而在第二时间间隔内未接收到任一第二客户端的心跳消息的情况下,业务服务器可以判定该第二客户端离开多媒体房间,进而可以更新第一房间信息中的客户端列表,执行生成第一房间信息的增量消息的步骤。
[0213] 其中,第一时间间隔也就是心跳发送间隔时间(heartbeatIntervalMs),可以是业务服务器全局预设的时间,也可以包括在多媒体房间的房间信息中,根据不同的多媒体房间进行设定。第二时间间隔不小于第一时间间隔,可以是预设的时间,也可以是根据第一时间间隔确定的时间,具体不做限定。
[0214] 这样,在任一第二客户端离开多媒体房间的情况下,业务服务器可以及时对客户端列表进行更新,在下发增量消息时,减少增量消息发送的次数,进一步降低业务服务器的处理压力。
[0215] 一种实现方式中,第二客户端还可以按照第三时间间隔,检测与业务服务器之间的长连接,在长连接断开的情况下,重新与业务服务器建立长连接。其中,第三时间间隔可以与第一时间间隔相同,比如,第二客户端可以利用向业务服务器发送心跳消息的机会,检测与业务服务器之间的长连接,或者,第三时间间隔也可以与第一时间间隔不同,比如,第二客户端也可以单独向业务服务器发送长连接检测请求,具体不做限定。这样,可以在长连接断开的情况下及时恢复连接,从而增强长连接的稳定性。
[0216] 另外,第二客户端还可以按照第四时间间隔,向业务服务器发送房间信息获取请求,业务服务器在接收到房间信息获取请求后,向第二客户端返回第一房间信息,第二客户端将接收到的第一房间信息存储为新的第二房间信息。
[0217] 也就是说,第二客户端可以定期向业务服务器拉取多媒体房间的全量房间信息,在本申请中,第四时间间隔比较长,可以表示为syncFullIntervalMs,通常,第四时间间隔大于5分钟,这样既能保证第二客户端中第二房间信息的准确性,又不会增加业务服务器的处理压力。
[0218] 一种实现方式中,在业务服务器与第二客户端之间的长连接断开的情况下,第二客户端可以发送增量消息获取请求,增量消息获取请求携带第二房间信息的版本号,业务服务器在任一增量消息的版本号大于增量消息获取请求携带的版本号的情况下,向第二客户端返回该增量消息,或,在增量消息的版本号均不大于增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向第二客户端返回增量消息获取结果。
[0219] 也就是说,业务服务器接收到增量消息获取请求后,不立即返回增量消息获取结果,直到第一房间信息发生变化,产生了新的增量消息的版本号,或者直到第五时间间隔之后,才向第二客户端返回增量消息获取结果。其中,第五时间间隔是一段较长的时间,可以是1分钟。这样,在业务服务器与第二客户端之间的长连接断开的情况下,既能减少业务服务器频繁返回数据造成的请求压力,也能实现房间数据的实时性和准确性。
[0220] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0221] 第四方面,将对本公开实施例提供的一种应用于第二客户端的信息同步方法进行详细介绍。
[0222] 如图5所示,本公开实施例提供的一种应用于第二客户端的信息同步方法,包括如下步骤:
[0223] 在S401中,接收业务服务器通过长连接发送的第一房间信息的增量消息。
[0224] 其中,第一房间信息为业务服务器本地存储的多媒体房间的房间信息,增量消息为业务服务器根据第一客户端发送的状态变更请求更新多媒体房间的第一房间信息后生成的。
[0225] 其中,长连接是指可以连续发送多个数据包的连接,可以负责下行消息发送以及超时断开的通知,比如,可以是KwaiLink长连接。也就是说,业务服务器在第一房间信息有变化时,生成增量消息,进而通过长连接向第二客户端发送增量消息,如果第一房间信息没有发生变化,则业务服务器不发送增量消息。
[0226] 这样,相比于相关技术中第二客户端定期向业务服务器发送数据获取请求的方式,可以节省资源,减少第二客户端不必要的向业务服务器发送的请求,降低业务服务器的处理压力。
[0227] 增量消息是指用于指示第一房间信息的增量变化的消息,也就是说,根据增量消息,可以确定多媒体房间的房间信息发生了哪些变化,进而使得接收到增量消息的设备可以对自身存储的多媒体房间的房间信息进行更新,更新后的房间信息与业务服务器中存储的同一多媒体房间的房间信息同步。
[0228] 在S402中,根据增量消息,更新多媒体房间的第二房间信息,第二房间信息为第二客户端本地存储的多媒体房间的房间信息。
[0229] 本步骤中,第二客户端在更新多媒体房间的第二房间信息后,可以根据更新后的第二房间信息执行相应的操作。举例而言,如果第二房间信息中更新了举手发言列表,那么,第二客户端可以从举手发言列表中选择第一客户端,向业务服务器发送针对被选择的第一客户端的邀请发言请求。
[0230] 一种实现方式中,业务服务器可以根据上一条增量消息的版本号,确定当前生成的增量消息的版本号,进而,通过长连接向多媒体房间内的第二客户端发送当前生成的增量消息及对应的版本号,这样,第二客户端在接收到的增量消息的版本号大于第二房间信息的版本号的情况下,对接收到的增量消息进行处理,并将接收到的增量消息的版本号作为更新后的第二房间信息的版本号。
[0231] 其中,增量消息的版本号可以表示为roomVersion,增量消息的版本号可以是纯数字的形式,比如,在上一条增量消息的版本号的基础上加一,得到新的版本号,或者,也可以按照预设的规则对上一条增量消息的版本号进行处理,计算得到新的版本号,具体不做限定。
[0232] 这样,在业务服务器与第二客户端之间的长连接存在网络延迟的情况下,第二客户端根据增量消息的版本号对最新的增量消息进行处理,可以减少前后两条增量消息接收顺序导致乱序的可能性。
[0233] 一种实现方式中,第二客户端可以按照第一时间间隔,向业务服务器发送心跳消息,用于通知业务服务器第二客户端的在线状态,这样,业务服务器如果接收到心跳消息,就可以判定发送心跳消息的第二客户端目前为在线状态,而在第二时间间隔内未接收到任一第二客户端的心跳消息的情况下,业务服务器可以判定该第二客户端离开多媒体房间,进而可以更新第一房间信息中的客户端列表,执行生成第一房间信息的增量消息的步骤。
[0234] 其中,第一时间间隔也就是心跳发送间隔时间(heartbeatIntervalMs),可以是业务服务器全局预设的时间,也可以包括在多媒体房间的房间信息中,根据不同的多媒体房间进行设定。第二时间间隔不小于第一时间间隔,可以是预设的时间,也可以是根据第一时间间隔确定的时间,具体不做限定。
[0235] 这样,在任一第二客户端离开多媒体房间的情况下,业务服务器可以及时对客户端列表进行更新,在下发增量消息时,减少增量消息发送的次数,进一步降低业务服务器的处理压力。
[0236] 一种实现方式中,第二客户端还可以按照第三时间间隔,检测与业务服务器之间的长连接,在长连接断开的情况下,重新与业务服务器建立长连接。其中,第三时间间隔可以与第一时间间隔相同,比如,第二客户端可以利用向业务服务器发送心跳消息的机会,检测与业务服务器之间的长连接,或者,第三时间间隔也可以与第一时间间隔不同,比如,第二客户端也可以单独向业务服务器发送长连接检测请求,具体不做限定。这样,可以在长连接断开的情况下及时恢复连接,从而增强长连接的稳定性。
[0237] 另外,第二客户端还可以按照第四时间间隔,向业务服务器发送房间信息获取请求,业务服务器在接收到房间信息获取请求后,向第二客户端返回第一房间信息,第二客户端将接收到的第一房间信息存储为新的第二房间信息。
[0238] 也就是说,第二客户端可以定期向业务服务器拉取多媒体房间的全量房间信息,在本申请中,第四时间间隔比较长,可以表示为syncFullIntervalMs,通常,第四时间间隔大于5分钟,这样既能保证第二客户端中第二房间信息的准确性,又不会增加业务服务器的处理压力。
[0239] 一种实现方式中,在业务服务器与第二客户端之间的长连接断开的情况下,第二客户端可以发送增量消息获取请求,增量消息获取请求携带第二房间信息的版本号,业务服务器在任一增量消息的版本号大于增量消息获取请求携带的版本号的情况下,向第二客户端返回该增量消息,或,在增量消息的版本号均不大于增量消息获取请求携带的版本号的情况下,在第五时间间隔之后,向第二客户端返回增量消息获取结果。
[0240] 也就是说,业务服务器接收到增量消息获取请求后,不立即返回增量消息获取结果,直到第一房间信息发生变化,产生了新的增量消息的版本号,或者直到第五时间间隔之后,才向第二客户端返回增量消息获取结果。其中,第五时间间隔是一段较长的时间,可以是1分钟。这样,在业务服务器与第二客户端之间的长连接断开的情况下,既能减少业务服务器频繁返回数据造成的请求压力,也能实现房间数据的实时性和准确性。
[0241] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0242] 第五方面,将对本公开实施例提供的一种应用于第一客户端的信息同步装置进行详细介绍。
[0243] 如图6所示,本公开实施例提供的一种应用于第一客户端的信息同步装置包括:
[0244] 获取单元501,被配置为执行获取针对多媒体房间的状态变更请求,将所述状态变更请求发送至业务服务器,以使所述业务服务器向所述第一客户端返回所述状态变更请求的请求结果,并通过长连接向所述多媒体房间内的第二客户端发送第一房间信息的增量消息,并使第二客户端根据所述增量消息更新第二房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息;
[0245] 第一接收单元502,被配置为执行在接收到所述请求结果之后,执行所述状态变更请求对应的操作。
[0246] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0247] 第六方面,将对本公开实施例提供的一种应用于业务服务器的信息同步装置进行详细介绍。
[0248] 如图7所示,本公开实施例提供的一种应用于业务服务器的信息同步装置包括:
[0249] 第二接收单元601,被配置为执行接收第一客户端发送的针对多媒体房间的状态变更请求;
[0250] 第一更新单元602,被配置为执行根据所述状态变更请求,更新所述多媒体房间的第一房间信息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息;
[0251] 发送单元603,被配置为执行向所述第一客户端返回所述状态变更请求的请求结果,并生成所述第一房间信息的增量消息,通过长连接向所述多媒体房间内的第二客户端发送所述增量消息。
[0252] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0253] 第七方面,将对本公开实施例提供的一种应用于第二客户端的信息同步装置进行详细介绍。
[0254] 如图8所示,本公开实施例提供的一种应用于第二客户端的信息同步装置包括:
[0255] 第三接收单元701,被配置为执行接收业务服务器通过长连接发送的第一房间信息的增量消息,所述第一房间信息为所述业务服务器本地存储的所述多媒体房间的房间信息,所述增量消息为所述业务服务器根据第一客户端发送的状态变更请求更新所述多媒体房间的第一房间信息后生成的;
[0256] 第二更新单元702,被配置为执行根据所述增量消息,更新所述多媒体房间的第二房间信息,所述第二房间信息为所述第二客户端本地存储的所述多媒体房间的房间信息。
[0257] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0258] 第八方面,将对本公开实施例提供的一种电子设备进行详细介绍。
[0259] 如图9所示,本公开实施例提供的一种电子设备的结构示意图。
[0260] 在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD‑ROM、磁带、软盘和光数据存储设备等。
[0261] 在示例性实施例中,还提供一种计算机程序产品,当其在计算机上运行时,使得计算机实现上述多媒体数据播放的方法。
[0262] 图10是根据一示例性实施例示出的另一种装置800的框图。例如,装置800可以是移动电话,计算机,数字广播电子设备,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0263] 参照图10,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
[0264] 处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0265] 存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0266] 电源组件807为装置800的各种组件提供电力。电源组件807可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
[0267] 多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0268] 音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0269] I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0270] 传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0271] 通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0272] 在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述任一信息同步方法。
[0273] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。可选地,例如,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性非临时性计算机可读存储介质计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD‑ROM、磁带、软盘和光数据存储设备等。
[0274] 根据本公开实施例的第九方面,提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述任一信息同步方法。
[0275] 根据本公开实施例的第十方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述任一信息同步方法。
[0276] 由以上可见,本公开实施例提供的技术方案中,业务服务器在更新第一房间信息之后,可以通过生成并向多媒体房间内的第二客户端发送增量消息,就可以实现第二客户端与业务服务器中存储的多媒体房间的房间信息的同步,第二客户端可以减少向业务服务器发送信息获取请求的次数,也减少了业务服务器接收到的信息获取请求的数量,从而减轻了业务服务器的负载压力。
[0277] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0278] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。