基于页面端同步编辑文档的方法、装置及计算机设备与流程

文档序号:18834801发布日期:2019-10-09 04:50阅读:217来源:国知局
基于页面端同步编辑文档的方法、装置及计算机设备与流程

本申请涉及到计算机领域,特别是涉及到基于页面端同步编辑文档的方法、装置及计算机设备。



背景技术:

在日常操作中,一般一终端在编辑文档时,其他终端无法实现对该文档的编辑,无法实现统一时间同步编辑,当一个文档需要多方配合完成时,导致文档编辑周期长,无法及时更新文档数据。且如果多个人同时通过web页面编辑同一篇文章时,因为直接修改数据库中的文档数据,导致后执行保存的人会将先执行保存的数据覆盖,即至保留最后更新的痕迹;或者先执行数据删除之后导致后执行保存编辑的会保存失败等等,会存在一系列编辑冲突问题,无法实现多人同时在线编辑文档的协作方案。



技术实现要素:

本申请的主要目的为提供基于页面端同步编辑文档的方法,旨在解决现有在线编辑文档的过程中无法实现多人同步编辑的技术问题。

本申请提供了一种基于页面端同步编辑文档的方法,包括:

分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息;

根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档;

实时将所述第二文档分别发布于所述第一终端和所述第二终端。

优选地,所述分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容的步骤,包括:

实时获取所述第一终端发送的第一编辑文本,以及所述第二终端发送的第二编辑文本;

将所述第一文档分别与所述第一编辑文本和所述第二编辑文本进行对比,得到所述第一编辑文本相对于所述第一文档的第一差异信息,以及所述第二编辑文本相对于所述第一文档的第二差异信息,其中所述第一差异信息和第二差异信息分别包括字符位置差异和字符内容;

将所述第一差异信息作为所述第一编辑内容,将所述第二差异信息作为所述第二编辑内容,并根据所述第一编辑内容对应的字符位置差异确定所述第一文档位置信息,根据所述第二编辑内容对应的字符位置差异确定所述第二文档位置信息。

优选地,所述根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档的步骤,包括:

判断所述第一文档位置信息和所述第二文档位置信息是否相同;

若不相同,则分别根据所述第一编辑内容对应的字符位置差异,以及所述第二编辑内容对应的字符位置差异,将所述第一编辑内容对应的字符内容,以及所述第二编辑内容对应的字符内容,一一对应地插入到所述第一文档,形成所述第二文档。

优选地,所述判断所述第一文档位置信息和所述第二文档位置信息是否相同的步骤,包括:

判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签,其中所述锁定标签标记所述第一文档中处于锁定编辑状态的位置范围;

若是,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

优选地,所述判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签的步骤之后,包括:

若所述第一编辑文本和所述第二编辑文本均未携带锁定标签,则判断所述第一编辑内容对应的字符位置差异,与所述第二编辑内容对应的字符位置差异是否一致;

若不一致,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

优选地,所述实时将所述第二文档分别发布于所述第一终端和所述第二终端的步骤之后,包括:

实时判断是否存在请求调用所述第一文档的第三终端;

若存在,则向所述第三终端发送是否参与编辑的询问指令;

判断是否接收到所述第三终端发送的参与编辑的反馈指令;

若接收到所述第三终端发送的参与编辑的反馈指令,则将所述第一编辑文本和/或所述第二编辑文本携带的所述锁定标签集成于所述第二文档中;

将所述第三终端添加至同步编辑链中,并将携带所述锁定标签的第二文档,通过第一线程通道实时同步至所述同步编辑链中的各终端。

优选地,所述判断是否接收到所述第三终端发送的参与编辑的反馈指令的步骤之后,包括:

若未接收到所述第三终端发送的参与编辑的反馈指令,则锁定所述第二文档为只读模式;

将只读模式的所述第二文档,通过第二线程通道实时同步至所述第三终端。

本申请还提供了一种基于页面端同步编辑文档的装置,集成于服务器中,所述装置包括:

获取模块,用于分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息;

更新模块,用于根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档;

第一同步模块,用于实时将所述第二文档分别发布于所述第一终端和所述第二终端。

本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。

本申请通过php的websocket框架实现服务器分别实时存储各终端发送的对同一文档的编辑内容,并通过分析各终端发送的编辑内容,对上述同一文档进行实时更新,更新文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑同一文档,且避免一终端用户后保存的编辑文档,会将另一终端用户先保存的编辑文档进行覆盖的弊端,同时解决了一终端用户将文档删除之后,导致另一终端用户的编辑文档保存失败的冲突问题。本申请将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中的各终端实现实时更新上述同一文档的数据同步共享。

附图说明

图1本申请一实施例的基于页面端同步编辑文档的方法流程示意图;

图2本申请一实施例的基于页面端同步编辑文档的装置结构示意图;

图3本申请一实施例的计算机设备内部结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,本申请一实施例的基于页面端同步编辑文档的方法,包括:

s1:分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息。

s2:根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档。

s3:实时将所述第二文档分别发布于所述第一终端和所述第二终端。

本实施例通过php的websocket框架实现服务器分别实时存储各终端发送的编辑内容,并通过分析各终端发送的编辑内容,对第一文档进行实时更新。本实施例将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中实现各终端用户更新第一文档的数据同步共享,即各终端均可实时显示、共享到整个第一文档的编辑状态和编辑过程,促进全局统筹编辑的效果。比如,a终端编辑a区域时,可实时观看到b终端编辑b区域的内容,同时a终端编辑a区域的内容也会同步更新至b终端。当第一文档中不存在锁定标签时,各终端对第一文档享有相同的编辑权限,比如,a终端未对a区域设置锁定标签,则b终端依然可以同步编辑a区域,甚至可对a终端编辑a区域的内容进行修订。当第一文档中存在锁定标签时,仅对锁定标签对应的区域具有编辑权限限制,即仅设定锁定标签的对应终端,对锁定标签对应的区域具有编辑权限,但其他终端依然可实时显示、共享到锁定标签对应的区域的编辑修改过程。通过将各终端发送的编辑内容分别存储和分析,并将各终端发送的编辑内容同步更新到第一文档中,形成第二文档,即第二文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑第一文档,且避免一终端用户后保存的编辑后第一文档,会将另一终端用户先保存的编辑后第一文档进行覆盖,或者一终端用户将第一文档删除之后,导致另一终端用户编辑的第一文档保存失败等类似的冲突问题。上述终端包括但不限于计算机终端、智能手机等。

进一步地,所述分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容的步骤s1,包括:

s11:实时获取所述第一终端发送的第一编辑文本,以及所述第二终端发送的第二编辑文本。

s12:将所述第一文档分别与所述第一编辑文本和所述第二编辑文本进行对比,得到所述第一编辑文本相对于所述第一文档的第一差异信息,以及所述第二编辑文本相对于所述第一文档的第二差异信息,其中所述第一差异信息和第二差异信息分别包括字符位置差异和字符内容。

s13:将所述第一差异信息作为所述第一编辑内容,将所述第二差异信息作为所述第二编辑内容,并根据所述第一编辑内容对应的字符位置差异确定所述第一文档位置信息,根据所述第二编辑内容对应的字符位置差异确定所述第二文档位置信息。

本实施例通过分别接收各终端用户对第一文档进行修改编辑的编辑文本,并分别将各编辑文本与第一文档进行对比,确定出各编辑文本与第一文档的差异信息,并将上述差异信息作为编辑内容从各编辑文本中摘取出来,且编辑内容中携带其相对于第一文档的编辑文档位置信息。上述编辑文档位置信息通过将编辑文本中的字符与第一文档中的字符一一比对,得到字符位置差异。比如在第一文档a字符和b字符之间插入字符c,则编辑内容表示为(a-b):(c),其中“:”前的数据为表示编辑文档位置信息的字符位置差异,“:”后的数据为字符内容。以便服务器根据分析得到的字符位置差异,将对应编辑的字符内容对应插入到字符位置差异处,通过整合同一时间接收到的各终端方的编辑内容实现对第一文档的协同同步修订形成第二文档,并将第二文档通过编辑链实时分发至编辑链中的各终端,实现编辑内容的同步共享,方便编辑链中的各终端用户之间进行同步协同编辑。

进一步地,所述根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档的步骤s2,包括:

s21:判断所述第一文档位置信息和所述第二文档位置信息是否相同。

s22:若不相同,则分别根据所述第一编辑内容对应的字符位置差异,以及所述第二编辑内容对应的字符位置差异,将所述第一编辑内容对应的字符内容,以及所述第二编辑内容对应的字符内容,一一对应地插入到所述第一文档,形成所述第二文档。

本实施例通过先判断各终端发送的编辑内容中携带的编辑文档位置信息是否相同,若不相同,则直接根据各编辑内容对应的编辑文档位置信息将对应编辑的字符内容插入到第一文档中,实现各终端用户对第一文档的同步编辑修订,并快速形成第二文档。上述第二文档为第一文档的实时修订版本,将第二文档分发至各终端后,下一时刻的修订则以第二文档为基础进行修订,如此实时循环,实现实时同步编辑更新。

进一步地,所述判断所述第一文档位置信息和所述第二文档位置信息是否相同的步骤s21,包括:

s210:判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签,其中所述锁定标签标记所述第一文档中处于锁定编辑状态的位置范围。

s211:若是,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

本实施例在用户编辑第一文档形成编辑文本的过程中,允许对编辑文档位置处添加锁定标签,以通过锁定标签锁定用户对该编辑文档位置的编辑权限,以排除其他人对锁定位置再进行编辑的可能性,以排除同步编辑同一文档位置的冲突,其他终端对于锁定标签锁定位置仅具有浏览权限。即第一编辑文本中存在的锁定标签,与第二编辑文件中存在的锁定标签一定不同,当多个编辑文本中均存在对应的锁定标签,则根据锁定标签的排他性操作,推定多个编辑文本中所包含的编辑文档位置均不同。本实施例通过将锁定标签以特定标识存在于编辑文本中,并与编辑文本一并实时上传至服务器,以便通过服务器实现在整个编辑链中分发共享,以实现对同一文档无冲突的同步编辑。

进一步地,所述判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签的步骤s21之后,包括:

s23:若所述第一编辑文本和所述第二编辑文本均未携带锁定标签,则判断所述第一编辑内容对应的字符位置差异,与所述第二编辑内容对应的字符位置差异是否一致。

s24:若不一致,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

本实施例中的锁定标签,用户可选择添加,也可选择不添加。当上述终端分别发布的编辑后第一文档中均未添加锁定标签,则需要对具体的各编辑文档位置进行具体分析,以确保在编辑文档位置不冲突的前提下,实现将各编辑文本中的编辑内容根据各编辑文档位置,在第一文档中进行直接融合,形成经多终端同步编辑后的第二文档。根据每一时刻的第一文档到第二文档的实时更新,实现在线编辑过程中的实时更新。

进一步地,所述实时将所述第二文档分别发布于所述第一终端和所述第二终端的步骤s3之后,包括:

s4:实时判断是否存在请求调用所述第一文档的第三终端。

s5:若存在,则向所述第三终端发送是否参与编辑的询问指令。

s6:判断是否接收到所述第三终端发送的参与编辑的反馈指令。

s7:若接收到所述第三终端发送的参与编辑的反馈指令,则将所述第一编辑文本和/或所述第二编辑文本携带的所述锁定标签集成于所述第二文档中。

s8:将所述第三终端添加至同步编辑链中,并将携带所述锁定标签的第二文档,通过第一线程通道实时同步至所述同步编辑链中的各终端。

本实施例中,在编辑链中各终端编辑第一文档的过程中,会实时判断是否有第三终端发送申请调用第一文档的申请,若存在则分析上述申请调用中的指令是请求编辑指令还是请求浏览指令,若为请求编辑指令则将第三终端添加至编辑链中,与编辑链中其他的终端具有相同的权利和要求;若为请求浏览指令,则控制第二文档为只读模式。本申请另一实施例中编辑链中的各终端可通过通讯群相互建立通信连接,以进一步提高同步编辑协同效果。

进一步地,所述判断是否接收到所述第三终端发送的参与编辑的反馈指令的步骤s6之后,包括:

s61:若未接收到所述第三终端发送的参与编辑的反馈指令,则锁定所述第二文档为只读模式。

s62:将只读模式的所述第二文档,通过第二线程通道实时同步至所述第三终端。

本实施例通过异步线程分别管理编辑链中和编辑链外的各终端,通过第一线程实现编辑链中各终端的编辑状态的信息同步互通,以及通过第二线程实现服务器与编辑链之外的终端的信息沟通,以区别管理各终端上呈现的第一文档和第二文档中的权限状态。

本实施例通过php的websocket框架实现服务器分别实时存储各终端发送的对同一文档的编辑内容,并通过分析各终端发送的编辑内容,对上述同一文档进行实时更新,更新文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑同一文档,且避免一终端用户后保存的编辑文档,会将另一终端用户先保存的编辑文档进行覆盖的弊端,同时解决了一终端用户将文档删除之后,导致另一终端用户的编辑文档保存失败的冲突问题。本实施例将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中的各终端实现实时更新上述同一文档的数据同步共享。

参照图2,本申请一实施例的基于页面端同步编辑文档的装置,集成于服务器中,所述装置包括:

获取模块1,用于分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息。

更新模块2,用于根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档。

第一同步模块3,用于实时将所述第二文档分别发布于所述第一终端和所述第二终端。

本实施例通过php的websocket框架实现服务器分别实时存储各终端发送的编辑内容,并通过分析各终端发送的编辑内容,对第一文档进行实时更新。本实施例将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中实现各终端用户更新第一文档的数据同步共享,即各终端均可实时显示、共享到整个第一文档的编辑状态和编辑过程,促进全局统筹编辑的效果。比如,a终端编辑a区域时,可实时观看到b终端编辑b区域的内容,同时a终端编辑a区域的内容也会同步更新至b终端。当第一文档中不存在锁定标签时,各终端对第一文档享有相同的编辑权限,比如,a终端未对a区域设置锁定标签,则b终端依然可以同步编辑a区域,甚至可对a终端编辑a区域的内容进行修订。当第一文档中存在锁定标签时,仅对锁定标签对应的区域具有编辑权限限制,即仅设定锁定标签的对应终端,对锁定标签对应的区域具有编辑权限,但其他终端依然可实时显示、共享到锁定标签对应的区域的编辑修改过程。通过将各终端发送的编辑内容分别存储和分析,并将各终端发送的编辑内容同步更新到第一文档中,形成第二文档,即第二文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑第一文档,且避免一终端用户后保存的编辑后第一文档,会将另一终端用户先保存的编辑后第一文档进行覆盖,或者一终端用户将第一文档删除之后,导致另一终端用户编辑的第一文档保存失败等类似的冲突问题。上述终端包括但不限于计算机终端、智能手机等。

进一步地,所述获取模块1,包括:

获取单元,用于实时获取所述第一终端发送的第一编辑文本,以及所述第二终端发送的第二编辑文本。

得到单元,用于将所述第一文档分别与所述第一编辑文本和所述第二编辑文本进行对比,得到所述第一编辑文本相对于所述第一文档的第一差异信息,以及所述第二编辑文本相对于所述第一文档的第二差异信息,其中所述第一差异信息和第二差异信息分别包括字符位置差异和字符内容。

确定单元,用于将所述第一差异信息作为所述第一编辑内容,将所述第二差异信息作为所述第二编辑内容,并根据所述第一编辑内容对应的字符位置差异确定所述第一文档位置信息,根据所述第二编辑内容对应的字符位置差异确定所述第二文档位置信息。

本实施例通过分别接收各终端用户对第一文档进行修改编辑的编辑文本,并分别将各编辑文本与第一文档进行对比,确定出各编辑文本与第一文档的差异信息,并将上述差异信息作为编辑内容从各编辑文本中摘取出来,且编辑内容中携带其相对于第一文档的编辑文档位置信息。上述编辑文档位置信息通过将编辑文本中的字符与第一文档中的字符一一比对,得到字符位置差异。比如在第一文档a字符和b字符之间插入字符c,则编辑内容表示为(a-b):(c),其中“:”前的数据为表示编辑文档位置信息的字符位置差异,“:”后的数据为字符内容。以便服务器根据分析得到的字符位置差异,将对应编辑的字符内容对应插入到字符位置差异处,通过整合同一时间接收到的各终端方的编辑内容实现对第一文档的协同同步修订形成第二文档,并将第二文档通过编辑链实时分发至编辑链中的各终端,实现编辑内容的同步共享,方便编辑链中的各终端用户之间进行同步协同编辑。

进一步地,所述更新模块2,包括:

判断单元,用于判断所述第一文档位置信息和所述第二文档位置信息是否相同。

插入单元,用于若第一文档位置信息和所述第二文档位置信息不相同,则分别根据所述第一编辑内容对应的字符位置差异,以及所述第二编辑内容对应的字符位置差异,将所述第一编辑内容对应的字符内容,以及所述第二编辑内容对应的字符内容,一一对应地插入到所述第一文档,形成所述第二文档。

本实施例通过先判断各终端发送的编辑内容中携带的编辑文档位置信息是否相同,若不相同,则直接根据各编辑内容对应的编辑文档位置信息将对应编辑的字符内容插入到第一文档中,实现各终端用户对第一文档的同步编辑修订,并快速形成第二文档。上述第二文档为第一文档的实时修订版本,将第二文档分发至各终端后,下一时刻的修订则以第二文档为基础进行修订,如此实时循环,实现实时同步编辑更新。

进一步地,所述判断单元,包括:

第一判断子单元,用于判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签,其中所述锁定标签标记所述第一文档中处于锁定编辑状态的位置范围。

第一判定子单元,用于若所述第一编辑文本和/或所述第二编辑文本携带锁定标签,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

本实施例在用户编辑第一文档形成编辑文本的过程中,允许对编辑文档位置处添加锁定标签,以通过锁定标签锁定用户对该编辑文档位置的编辑权限,以排除其他人对锁定位置再进行编辑的可能性,以排除同步编辑同一文档位置的冲突,其他终端对于锁定标签锁定位置仅具有浏览权限。即第一编辑文本中存在的锁定标签,与第二编辑文件中存在的锁定标签一定不同,当多个编辑文本中均存在对应的锁定标签,则根据锁定标签的排他性操作,推定多个编辑文本中所包含的编辑文档位置均不同。本实施例通过将锁定标签以特定标识存在于编辑文本中,并与编辑文本一并实时上传至服务器,以便通过服务器实现在整个编辑链中分发共享,以实现对同一文档无冲突的同步编辑。

进一步地,所述判断单元,包括:

第二判断子单元,用于若所述第一编辑文本和所述第二编辑文本均未携带锁定标签,则判断所述第一编辑内容对应的字符位置差异,与所述第二编辑内容对应的字符位置差异是否一致。

第二判定子单元,用于若不一致,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

本实施例中的锁定标签,用户可选择添加,也可选择不添加。当上述终端分别发布的编辑后第一文档中均未添加锁定标签,则需要对具体的各编辑文档位置进行具体分析,以确保在编辑文档位置不冲突的前提下,实现将各编辑文本中的编辑内容根据各编辑文档位置,在第一文档中进行直接融合,形成经多终端同步编辑后的第二文档。根据每一时刻的第一文档到第二文档的实时更新,实现在线编辑过程中的实时更新。

进一步地,基于页面端同步编辑文档的装置,包括:

第一判断模块,用于实时判断是否存在请求调用所述第一文档的第三终端。

第一发送模块,用于若存在,则向所述第三终端发送是否参与编辑的询问指令。

第二判断模块,用于判断是否接收到所述第三终端发送的参与编辑的反馈指令。

第二发送模块,用于若接收到所述第三终端发送的参与编辑的反馈指令,则将所述第一编辑文本和/或所述第二编辑文本携带的所述锁定标签集成于所述第二文档中。

添加模块,用于将所述第三终端添加至同步编辑链中,并将携带所述锁定标签的第二文档,通过第一线程通道实时同步至所述同步编辑链中的各终端。

本实施例中,在编辑链中各终端编辑第一文档的过程中,会实时判断是否有第三终端发送申请调用第一文档的申请,若存在则分析上述申请调用中的指令是请求编辑指令还是请求浏览指令,若为请求编辑指令则将第三终端添加至编辑链中,与编辑链中其他的终端具有相同的权利和要求;若为请求浏览指令,则控制第二文档为只读模式。本申请另一实施例中编辑链中的各终端可通过通讯群相互建立通信连接,以进一步提高同步编辑协同效果。

进一步地,基于页面端同步编辑文档的装置,包括:

锁定模块,用于若未接收到所述第三终端发送的参与编辑的反馈指令,则锁定所述第二文档为只读模式。

第二同步模块,用于将只读模式的所述第二文档,通过第二线程通道实时同步至所述第三终端。

本实施例通过异步线程分别管理编辑链中和编辑链外的各终端,通过第一线程实现编辑链中各终端的编辑状态的信息同步互通,以及通过第二线程实现服务器与编辑链之外的终端的信息沟通,以区别管理各终端上呈现的第一文档和第二文档中的权限状态。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于页面端同步编辑文档的过程需要的所有数据。该计算机设备的网络接口用于与外部的端通过网络连接通信。该计算机程序被处理器执行时以实现基于页面端同步编辑文档的方法。

上述处理器执行上述基于页面端同步编辑文档的方法,包括:分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息;根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档;实时将所述第二文档分别发布于所述第一终端和所述第二终端。

上述计算机设备,通过php的websocket框架实现服务器分别实时存储各终端发送的对同一文档的编辑内容,并通过分析各终端发送的编辑内容,对上述同一文档进行实时更新,更新文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑同一文档,且避免一终端用户后保存的编辑文档,会将另一终端用户先保存的编辑文档进行覆盖的弊端,同时解决了一终端用户将文档删除之后,导致另一终端用户的编辑文档保存失败的冲突问题。通过将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中的各终端实现实时更新上述同一文档的数据同步共享。

在一个实施例中,上述处理器分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容的步骤,包括:实时获取所述第一终端发送的第一编辑文本,以及所述第二终端发送的第二编辑文本;将所述第一文档分别与所述第一编辑文本和所述第二编辑文本进行对比,得到所述第一编辑文本相对于所述第一文档的第一差异信息,以及所述第二编辑文本相对于所述第一文档的第二差异信息,其中所述第一差异信息和第二差异信息分别包括字符位置差异和字符内容;将所述第一差异信息作为所述第一编辑内容,将所述第二差异信息作为所述第二编辑内容,并根据所述第一编辑内容对应的字符位置差异确定所述第一文档位置信息,根据所述第二编辑内容对应的字符位置差异确定所述第二文档位置信息。

在一个实施例中,上述处理器根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档的步骤,包括:判断所述第一文档位置信息和所述第二文档位置信息是否相同;若不相同,则分别根据所述第一编辑内容对应的字符位置差异,以及所述第二编辑内容对应的字符位置差异,将所述第一编辑内容对应的字符内容,以及所述第二编辑内容对应的字符内容,一一对应地插入到所述第一文档,形成所述第二文档。

在一个实施例中,上述处理器判断所述第一文档位置信息和所述第二文档位置信息是否相同的步骤,包括:判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签,其中所述锁定标签标记所述第一文档中处于锁定编辑状态的位置范围;若是,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

在一个实施例中,上述处理器判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签的步骤之后,包括:若所述第一编辑文本和所述第二编辑文本均未携带锁定标签,则判断所述第一编辑内容对应的字符位置差异,与所述第二编辑内容对应的字符位置差异是否一致;若不一致,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

在一个实施例中,上述处理器实时将所述第二文档分别发布于所述第一终端和所述第二终端的步骤之后,包括:实时判断是否存在请求调用所述第一文档的第三终端;若存在,则向所述第三终端发送是否参与编辑的询问指令;判断是否接收到所述第三终端发送的参与编辑的反馈指令;若接收到所述第三终端发送的参与编辑的反馈指令,则将所述第一编辑文本和/或所述第二编辑文本携带的所述锁定标签集成于所述第二文档中;将所述第三终端添加至同步编辑链中,并将携带所述锁定标签的第二文档,通过第一线程通道实时同步至所述同步编辑链中的各终端。

在一个实施例中,上述处理器判断是否接收到所述第三终端发送的参与编辑的反馈指令的步骤之后,包括:若未接收到所述第三终端发送的参与编辑的反馈指令,则锁定所述第二文档为只读模式;将只读模式的所述第二文档,通过第二线程通道实时同步至所述第三终端。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现基于页面端同步编辑文档的方法,包括:分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容,其中,所述第一编辑内容携带第一文档位置信息,所述第二编辑内容携带第二文档位置信息;根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档;实时将所述第二文档分别发布于所述第一终端和所述第二终端。

上述计算机可读存储介质,通过php的websocket框架实现服务器分别实时存储各终端发送的对同一文档的编辑内容,并通过分析各终端发送的编辑内容,对上述同一文档进行实时更新,更新文档中同时包括了各终端发送的编辑内容,实现了多人同步协同编辑同一文档,且避免一终端用户后保存的编辑文档,会将另一终端用户先保存的编辑文档进行覆盖的弊端,同时解决了一终端用户将文档删除之后,导致另一终端用户的编辑文档保存失败的冲突问题。通过将与服务器相连的各终端在同步申请编辑同一文档时,形成基于php的websocket框架的长链的编辑链,同一编辑链中的各终端实现实时更新上述同一文档的数据同步共享。

在一个实施例中,上述处理器分别获取第一终端发送的第一用户当前编辑第一文档的第一编辑内容,以及第二终端发送的第二用户当前编辑所述第一文档的第二编辑内容的步骤,包括:实时获取所述第一终端发送的第一编辑文本,以及所述第二终端发送的第二编辑文本;将所述第一文档分别与所述第一编辑文本和所述第二编辑文本进行对比,得到所述第一编辑文本相对于所述第一文档的第一差异信息,以及所述第二编辑文本相对于所述第一文档的第二差异信息,其中所述第一差异信息和第二差异信息分别包括字符位置差异和字符内容;将所述第一差异信息作为所述第一编辑内容,将所述第二差异信息作为所述第二编辑内容,并根据所述第一编辑内容对应的字符位置差异确定所述第一文档位置信息,根据所述第二编辑内容对应的字符位置差异确定所述第二文档位置信息。

在一个实施例中,上述处理器根据所述第一文档位置信息和所述第二文档位置信息,分别将所述第一编辑内容和所述第二编辑内容更新到所述第一文档中,形成第二文档的步骤,包括:判断所述第一文档位置信息和所述第二文档位置信息是否相同;若不相同,则分别根据所述第一编辑内容对应的字符位置差异,以及所述第二编辑内容对应的字符位置差异,将所述第一编辑内容对应的字符内容,以及所述第二编辑内容对应的字符内容,一一对应地插入到所述第一文档,形成所述第二文档。

在一个实施例中,上述处理器判断所述第一文档位置信息和所述第二文档位置信息是否相同的步骤,包括:判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签,其中所述锁定标签标记所述第一文档中处于锁定编辑状态的位置范围;若是,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

在一个实施例中,上述处理器判断所述第一编辑文本和/或所述第二编辑文本是否携带锁定标签的步骤之后,包括:若所述第一编辑文本和所述第二编辑文本均未携带锁定标签,则判断所述第一编辑内容对应的字符位置差异,与所述第二编辑内容对应的字符位置差异是否一致;若不一致,则判定所述第一文档位置信息和所述第二文档位置信息不相同。

在一个实施例中,上述处理器实时将所述第二文档分别发布于所述第一终端和所述第二终端的步骤之后,包括:实时判断是否存在请求调用所述第一文档的第三终端;若存在,则向所述第三终端发送是否参与编辑的询问指令;判断是否接收到所述第三终端发送的参与编辑的反馈指令;若接收到所述第三终端发送的参与编辑的反馈指令,则将所述第一编辑文本和/或所述第二编辑文本携带的所述锁定标签集成于所述第二文档中;将所述第三终端添加至同步编辑链中,并将携带所述锁定标签的第二文档,通过第一线程通道实时同步至所述同步编辑链中的各终端。

在一个实施例中,上述处理器判断是否接收到所述第三终端发送的参与编辑的反馈指令的步骤之后,包括:若未接收到所述第三终端发送的参与编辑的反馈指令,则锁定所述第二文档为只读模式;将只读模式的所述第二文档,通过第二线程通道实时同步至所述第三终端。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1