本发明涉及计算机领域,具体涉及一种多人协作系统的交互方法。
背景技术:
1、web office在线编辑主要是为了方便用户能够更加轻松、便捷的在任何场所、任何情境下都可以正常办公的互联网产品。在web office在线编辑中,多人协作是必不可少的一个功能点,可以让多用户同时编辑同一文档,这是桌面办公软件无法实现的。
2、因此,有必要提供一种新的技术方案。
技术实现思路
1、为解决现有技术中存在的技术问题,本发明公开了一种多人协作系统的交互方法,具体技术方案如下所述:
2、本发明提供一种多人协作系统的交互方法,包括如下步骤:
3、s1,前端用户对文档进行某一操作时,前端发送要锁请求,将事件的选区信息及前端的协作版本号一起发送给后端,后端接收到数据后进行验证,判断是否可以拿到锁;
4、s2,后端首先验证协作版本号是否正确,如果正确则该用户的事件信息可以被后端接收,记录下当前事件的选区信息,并将结果返回给前端,告知前端可以发送事件信息;
5、s3,前端拿到后端的锁后,将操作信息发送给后端,后端正常接收到前端的协作事件信息后,先验证当前事件携带的协作版本号是否正确,如果正确则将事件数据记录下来,并根据协作版本号按照顺序依次发送给所有协作方,并更新model版本号。
6、进一步的,步骤s2中协作版本号如果验证为错误的话,则当前用户是没有接收到某一步的协作信息,对此则判断未接收到的消息与其自身所做的操作是否存在选区冲突,如果不存在选区冲突,则可以正常执行步骤s2中的操作。
7、进一步的,如果未接收到的消息与其自身所做的操作存在选区冲突,则无法执行步骤s2中的操作,告知前端无法获取锁,并且将缺失的协作版本号发给前端,等到前端拿到对应协作版本号的事件信息后才可以再次发送要锁请求。
8、进一步的,前端发送事件信息给后端后,如果后端长时间未收到事件信息,那么后端会伪造一个空的事件,连同协作版本号一起发送给所有协作方,同时清除原事件的选区信息。
9、进一步的,步骤s3中,如果验证当前事件携带的协作版本号错误,则后端会拒绝该事件,并告知前端。
10、进一步的,model版本号是后端接收到数据后更新的版本号,model版本号里包含了相应的事件操作和顺序,新开档的用户拿到的是从后端获取的model版本号。
11、进一步的,后端存储有一个map集合,key值对应协作版本号,value对应具体事件信息,当接收到的是当前后端等待的事件时,会直接执行此事件,执行完成后会检测等待队列中是否有下一个对应的事件信息,如果有就执行,没有就什么都不做。
12、进一步的,如果接收到的不是当前后端等待的事件时,将其保存在等待队列中,等到对应的协作版本号事件执行完后再执行等待队列中的事件。
13、进一步的,前端需要间隔一段时间就跟后端确认一下协作版本号是否正确,同时后端如果发现所有用户都接收到某一个版本号的事件信息后,将从后端清空这个版本号的冲突记录。
14、本发明具有以下有益效果:
15、本发明提供的多人协作系统交互的方法,实现了多用户操作同一文档的效果,能够快速准确的将用户做的任意操作快捷、准确的发送给其他协作用户,并且整合ot算法后,能够有效处理协作冲突所造成的问题,让用户可以随时随地,在任意设备上跟多人进行实时互动。
16、其中锁的作用其实是防止多个用户的操作信息一股脑丢给后端,尽可能在前端把不同用户的操作冲突处理好,减轻服务器的压力,让后端的逻辑更简洁些。如果没有锁,那么可能多个操作会同时发给后端,后端需要针对多个操作在后端进行冲突处理,加大服务器端压力。
17、本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
1.一种多人协作系统的交互方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的多人协作系统交互的方法,其特征在于,步骤s2中协作版本号如果验证为错误的话,则当前用户是没有接收到某一步的协作信息,对此则判断未接收到的消息与其自身所做的操作是否存在选区冲突,如果不存在选区冲突,则可以正常执行步骤s2中的操作。
3.根据权利要求2所述的多人协作系统交互的方法,其特征在于,如果未接收到的消息与其自身所做的操作存在选区冲突,则无法执行步骤s2中的操作,告知前端无法获取锁,并且将缺失的协作版本号发给前端,等到前端拿到对应协作版本号的事件信息后才可以再次发送要锁请求。
4.根据权利要求1所述的多人协作系统交互的方法,其特征在于,步骤s3中,前端发送事件信息给后端后,如果后端长时间未收到事件信息,那么后端会伪造一个空的事件,连同协作版本号一起发送给所有协作方,同时清除原事件的选区信息。
5.根据权利要求1所述的多人协作系统交互的方法,其特征在于,步骤s3中,如果验证当前事件携带的协作版本号错误,则后端会拒绝该事件,并告知前端。
6.根据权利要求1所述的多人协作系统交互的方法,其特征在于,model版本号是后端接收到数据后更新的版本号,model版本号里包含了相应的事件操作和顺序,新开档的用户拿到的是从后端获取的model版本号。
7.根据权利要求6所述的多人协作系统交互的方法,其特征在于,后端存储有一个map集合,key值对应协作版本号,value对应具体事件信息,当接收到的是当前后端等待的事件时,会直接执行此事件,执行完成后会检测等待队列中是否有下一个对应的事件信息,如果有就执行,没有就什么都不做。
8.根据权利要求7所述的多人协作系统交互的方法,其特征在于,如果接收到的不是当前后端等待的事件时,将其保存在等待队列中,等到对应的协作版本号事件执行完后再执行等待队列中的事件。
9.根据权利要求1所述的多人协作系统交互的方法,其特征在于,前端需要间隔一段时间就跟后端确认一下协作版本号是否正确,同时后端如果发现所有用户都接收到某一个版本号的事件信息后,将从后端清空这个版本号的冲突记录。