一种在线协同富文本编辑装置、系统及通信传输方法与流程

未命名 08-26 阅读:111 评论:0


1.本发明属于互联网技术领域,尤其涉及一种在线协同富文本编辑装置、系统及通信传输方法。


背景技术:

2.随着互联网技术的不断发展,在线协同越来越普遍,逐渐成为团队协作的重要方式。多个团队成员通过互联网协同编辑同一个富文本格式的工作文档,比如工作计划、会议纪要、源码文件等,每个成员都可以在线修改文档并实时看到其他成员的修改,从而显著提高了团队协作效率。
3.在多个成员在线协同编辑同一个文档的过程中,很容易发生数据冲突和同步问题。为了解决这些问题,现有实现方法包括全量数据同步、编辑锁等。然而这些方式都存在一些局限,例如频繁的数据收发和读写、需要高带宽、高延迟等,降低了协同编辑的效率,导致用户体验较差。


技术实现要素:

4.本发明基于操作合并算法(operation composition)和超小传输协议(ultra-samll transport protocol),提出一种在线协同富文本编辑装置、系统及通信传输方法,以提高富文本的在线协同编辑效率。本发明的具体技术方案如下:
5.一种在线协同富文本编辑装置,用于客户端,包括:
6.富文本渲染器,用于在初次加载文本时创建渲染树,并根据接收到的来自于命令处理器的操作命令更新所述渲染树;
7.富文本编辑器,用于根据渲染树显示文本内容,还用于接收本地用户的操作指令并将其转换为操作命令后发送到命令处理器;
8.命令处理器,用于接收富文本编辑器和信令服务器发送的操作命令,并对其进行操作合并运算后将合并结果发送到富文本渲染器和信令服务器。
9.进一步地,所述操作命令包括新增操作、编辑操作、删除操作和保持操作;
10.所述新增操作表示插入一段文字,其数据结构为数组,数组的第一位是要插入的字符串,第二位是表示文字样式的对象;
11.所述编辑操作表示修改一段文字的样式,其数据结构为数组,数组的第一位是文字长度,第二位是表示文字样式的对象;
12.所述保持操作是编辑操作的特例,表示保持一段文字的样式不变,表现为一个大于零的整数,该整数为要保持不变的文字的长度;
13.所述删除操作表示删除一段文字,表现为一个小于零的整数,该整数的绝对值为要删除文字的长度。
14.进一步地,所述富文本渲染器用于将命令处理器的操作命令解析并渲染到富文本编辑器的可见区域:
15.富文本渲染器从命令处理器得到一系列新增操作,先将所有新增操作中的文本字符合并成全量文本字符数组,然后根据显示宽度和文笔字体计算整个文本的换行位置,再遍历所有新增操作执行绘制并在换行处换行。
16.进一步地,所述富文本编辑器用于接收本地用户的操作指令并将其转换为操作序列;所述操作序列是一组序列化的操作,包括新增操作、删除操作和编辑操作,用于描述文本编辑的过程;
17.若t(n-1)和t(n)分别表示第n-1和第n个操作x作用在文本的位置,l(x)表示第n个操作x作用的原始文本的长度,则t(n)=t(n-1)+l(x)且t(1)=0;对于新增操作,l(x)=0;对于删除操作,l(x)等于删除字符串的长度;对于编辑操作,l(x)等于编辑字符串的长度;操作序列中的最后一个操作作用在文本的位置应等于原始文本的长度。
18.进一步地,所述操作合并运算用于将多个操作序列合并为一个操作序列:
19.若a、b分别表示两个操作序列,则有c=compose(a,b),表示将操作序列a和b合并为一个操作序列c,其中,对文本先执行操作序列a再执行操作序列b得到的结果与对相同文本直接执行操作序列c得到的结果相同。
20.进一步地,所述富文本编辑器包含两种状态:同步状态和等待同步状态;
21.富文本编辑器的初始状态为同步状态,并维护本地缓存操作命令和待确认命令数组;当本地缓存操作命令或待确认命令数组不为空时进入等待同步状态;当本地缓存操作命令和待确认命令数组都为空时返回同步状态;当收到信令服务器的操作命令时,如果富文本编辑器处于同步状态则交给命令处理器执行,如果处于等待同步状态则忽略该操作命令。
22.进一步地,所述命令处理器用于按照一定时间间隔将本地缓存操作命令发送到信令服务器并清空本地缓存操作命令:
23.命令处理器将本地缓存操作命令发送到信令服务器时,将操作命令存入待确认命令数组中,当命令处理器收到信令服务器返回的关于该操作命令的ack信号后再将该操作命令从待确认命令数组中移除。
24.进一步地,所述命令处理器还用于维护撤销栈和反撤销栈:
25.当收到富文本编辑器的操作命令时,生成该操作命令的逆命令push到所述撤销栈,撤销该操作命令时从所述撤销栈pop出该操作命令的逆命令执行,同时生成该撤销命令的逆命令push到所述反撤销栈;反撤销时从所述反撤销栈pop出该撤销命令的逆命令执行;如果收到信令服务器的操作命令,则清空所述撤销栈和反撤销栈。
26.一种在线协同富文本编辑装置,用于信令服务器端,包括:
27.接收模块,用于接收客户端发送的操作命令和控制指令;
28.运算模块,用于对接收到的操作命令进行操作合并运算;
29.存储模块,用于存储操作命令和文本内容;
30.发送模块,用于发送操作命令、控制指令和文本内容到客户端;
31.所述操作命令用于编辑文本内容,所述控制指令用于信令服务器与客户端间的连接建立和信号确认。
32.进一步地,还包括环形队列维护模块,所述环形队列的元素节点用于保存基于某个特定版本的文本内容的操作序列的存储地址,且环形队列的头元素节点指向基于上一版
本的文本内容的操作序列的存储地址;当环形队列满元素节点时,基于更早版本文本内容的操作序列会被基于新版本文本内容的操作序列覆盖。
33.进一步地,若接收到的操作命令所基于的文本内容的版本与环形队列头元素节点指向地址存储的操作命令所基于的版本相同,则认为没有冲突,存储该操作命令并将环形队列的头元素节点指向其存储地址;
34.否则认为有冲突,信令服务器将在环形队列中查找与该操作命令所基于的文本内容的版本相同的元素节点,如果没有找到,则丢弃该操作命令并要求客户端重连,如果找到,则将该元素节点与头元素节点间的所有元素节点指向的操作命令取逆后与该操作命令进行操作合并运算,并将运算结果的存储地址添加到环形队列中,同时将运算结果转发给其他客户端。
35.一种在线协同富文本编辑系统,包括互相连接的客户端和信令服务器,所述客户端包括上述用于客户端的富文本编辑装置,所述信令服务器包括上述用于信令服务器端的富文本编辑装置。
36.一种操作合并方法,用于实现上述的操作合并运算,包括以下步骤:
37.s1、输入待合并的操作序列a和b,并初始化空操作序列c;
38.s2、校验操作序列a的目标长度是否等于操作序列b的基于长度,若相等则进入下一步骤,否则结束该操作合并运算;所述基于长度表示操作序列作用的原始文本长度,所述目标长度表示操作序列作用后的文本长度;
39.s3、同时遍历操作序列a和b的子操作,根据子操作的较短长度分别取a和b的两个子操作opa、opb进行操作合并运算,并将子操作opa、opb的操作合并结果添加到操作序列c,较长子操作的多余部分留待下次循环合并;
40.s4、重复步骤s3,直至遍历完操作序列a和b的所有子操作,完成该操作合并运算并返回操作序列c。
41.进一步地,根据子操作opa和opb的操作类型执行不同的操作合并运算:
42.若opa是删除操作,则取opa,opb保留到下次循环;
43.若opb是新增操作,则取opb,opa保留到下次循环;
44.若opa和opb均是编辑操作,则取opb的样式覆盖opa的样式;
45.若opa是新增操作,opb是删除操作,则两者抵消;
46.若opa是新增操作,opb是编辑操作,则取opa,且opb的样式覆盖opa的样式;
47.若opa是编辑操作,opb是删除操作,则取opb。
48.一种用于富文本编辑系统的通信传输方法,包括以下步骤:
49.信令服务器在客户端初始化时,响应各客服端的连接请求并在建立连接后将文本内容及版本号发往各客户端;
50.信令服务器接收某客户端发送的本地操作命令,并将该操作命令所基于的文本内容的版本与信令服务器中环形队列头元素节点指向的操作命令所基于的版本进行比较:若一致,则向该客户端发送ack信号,并将该操作命令转发到其他客户端;
51.若不一致,则在环形队列中查找与该操作命令所基于的文本内容的版本相同的元素节点,如果不存在,则丢弃该操作命令并通知该客户端重建连接,如果存在,则将该元素节点与头元素节点间的所有元素节点指向的操作命令取逆后与该操作命令进行操作合并
运算,并将运算结果的存储地址添加到环形队列中,同时,向该客户端发送ack信号,并将合并后的操作命令转发给其他客户端;在所述ack信号传输至该客户端之前,该客户端收到的其他操作命令均被丢弃。
52.本发明的有益效果为:相比于现有技术,本发明具有以下优点:
53.1、通过操作合并算法将同一用户或多个用户的多个操作命令进行合并,降低了数据冲突的概率,提高了编辑效率。
54.2、通过自定义的超小传输协议(通信传输方法)实现数据传输量的最小化,降低了对网络带宽的要求和传输延迟,提高了数据同步的速度和准确性。
55.3、通过对操作命令进行精细化的记录和存储,提高了协同编辑的可追溯性。
附图说明
56.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
57.图1是本发明一个实施例的系统框图;
58.图2是本发明一个实施例中富文本编辑器的有限状态机图;
59.图3是本发明一个实施例中操作合并算法的示意图;
60.图4是本发明一个实施例中传输协议的示意图;
61.图5是本发明一个实施例中环形队列的示意图。
具体实施方式
62.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.请参考图1,为本发明提出的一种在线协同富文本编辑系统的框架图,包括信令服务器和多个客户端,客户端还包括富文本编辑器、富文本渲染器和命令处理器。
64.富文本编辑器负责根据渲染树显示文本内容和接收用户操作,该编辑器以软件开发工具包(sdk)的形式被客户端应用程序集成。本地用户编辑文本时所做的操作都会被转换为对文本内容中具体数据的操作命令。操作命令有四种类型:新增操作、编辑操作、删除操作和保持操作(特殊的编辑操作)。操作命令可以撤销(undo)和重做(redo)。
65.富文本渲染器负责在初次加载文档时创建渲染树,并基于从命令处理器收到的操作合并结果更新渲染树。命令处理器负责处理本地用户操作和执行操作合并算法,来自信令服务器的其他用户的操作命令也都会在命令处理器里进行操作合并。命令处理器将本地缓存的操作命令合并结果通过超小传输协议发送给信令服务器,信令服务器根据收到的操作命令进行必要的操作合并,并转发到其他客户端,同时进行持久化存储。
66.如图2所示,富文本编辑器有两种状态:同步状态(s1)和等待同步状态(s2)。富文本编辑器的初始状态为s1,并且维护本地缓存操作命令及待确认操作命令数组。富文本编辑器处理用户操作命令及信令服务器命令的规则如下:
67.a.富文本编辑器收到本地用户操作时,会直接将操作交给命令处理器执行,同时
又将其合并到本地缓存操作命令,再按照一定时间间隔将本地缓存操作命令发送到服务器并清空本地缓存操作命令;
68.b.富文本编辑器将本地缓存操作命令发送到信令服务器时,将命令存入待确认命令数组中,当收到信令服务器返回的关于这条操作命令的ack信号后再将这条操作命令从待确认命令数组中移除;
69.c.当本地缓存操作命令不为空或者待确认命令数组不为空时,进入s2状态;
70.d.当本地缓存操作命令和待确认命令数组都为空时返回s1状态;
71.e.当收到来自信令服务器的操作命令时,如果处于s1状态,则交给命令处理器执行,如果处于s2状态则忽略这条命令。
72.富文本编辑器接收用户的操作,并将其转换为一个操作序列。操作序列是一组序列化的操作命令,用于描述文本编辑的过程,这些操作可以是新增、删除或者编辑操作。新增操作表示插入一段文字,表现为数组数据格式,第一位是插入的字符串,第二位是表示样式的对象。例如:[“123”,{“color”:“rgb”,

}]。编辑操作表示修改一段文字样式(也可以保持不变),表现为数组数据格式,第一位是文字长度,第二位是表示样式的对象(样式对象为空表示保持不变)。例如[3,{“color”:“rgb”,

}]。删除操作表示删除一段文字,表现为一个小于0的整数,整数绝对值为要删除文字的长度,例如:-3。
[0073]
一个具体的例子,原始文本t为[[“a”,{“color”:“ef0032”}],[“bcdef”,{“color”:“ffffff”}]]。原始文本由一个都是新增操作的序列表示,表示一段文本”abcdef”,其中”a”的颜色是”ef0032”,“bcdef”的颜色是“ffffff”。操作序列a为[[“123”,{“color”:“000000”}],[3,{“color”:“110011”}],-3],表示先插入文本“123”,颜色“000000”,再将接下来3个字符“abc”的颜色修改为“110011”,最后将接下来三个字符“def”删掉;a作用在t上得到的新文本t1=[[“123”,{“color”:”000000”}],[“abc”,{”color“:“110011”}]],新文本仍然是由一个都是新增操作的序列表示。
[0074]
若t(n-1)和t(n)分别表示第n-1和第n个操作x作用在文本的位置,l(x)表示第n个操作x作用的原始文本的长度,则t(n)=t(n-1)+l(x)且t(1)=0;对于新增操作,l(x)=0;对于删除操作,l(x)等于删除字符串的长度;对于编辑操作,l(x)等于编辑字符串的长度;操作序列中的最后一个操作作用在文本的位置应等于原始文本的长度。我们把原始文本长度称作这个操作序列的基于长度,作用完后新文本的长度称为目标长度。在做操作合并运算时首先要校验前一个操作序列的目标长度和后一个操作序列的基于长度是否一致。
[0075]
富文本渲染器将命令处理器中的操作命令解析并渲染到富文本编辑器的可见区域。富文本渲染器从命令处理器得到一系列新增操作,先将所有新增操作中的文本字符合并成全量文本字符数组,根据显示宽度、文笔字体计算整个文本的换行位置,再遍历所有新增操作执行绘制,遇到换行处执行换行操作。
[0076]
命令处理器对本地用户的操作命令和来自信令服务器的远端用户的操作命令执行操作合并算法,并将结果发给富文本渲染器。操作合并算法是一种将两个操作序列a,b合并成一个操作序列c的算法;操作序列c需要满足条件:对于一个文本t,先进行a操作,再进行b操作,得到文本t1;对于t,进行c操作,得到t2;必有t1=t2。
[0077]
操作合并算法如下:
[0078]
如c=compose(a,b)
[0079]
则有apply(apply(t,a),b)=apply(t,c)
[0080]
其中:
[0081]
t:富文本原始数据
[0082]
a,b,c:操作序列
[0083]
compose:将两个操作序列合并成一个新的操作序列的算子
[0084]
apply:将一个操作序列作用在指定的富文本上的算子
[0085]
如图3所示,操作合并算法的一种实现方法为:创建一个空的操作序列c,同时遍历操作序列a和b的子操作,按两个子操作较短长度进行合并,长的子操作截成两段,多的一段留给下一次循环合并。各种子操作合并方式如图3,即根据子操作opa和opb操作类型执行不同的操作合并运算:若opa是删除操作,则取opa,opb保留到下次循环;若opb是新增操作,则取opb,opa保留到下次循环;若opa和opb均是编辑操作,则取opb的样式覆盖opa的样式;若opa是新增操作,opb是删除操作,则两者抵消;若opa是新增操作,opb是编辑操作,则取opa,且opb的样式覆盖opa的样式;若opa是编辑操作,opb是删除操作,则取opb。
[0086]
命令处理器还维护一个撤销栈,当收到富文本编辑器的编辑命令时,生成一条该命令的逆命令push到撤销栈中,撤销(undo)的时候从撤销栈pop一条命令执行。如果收到信令服务器的编辑命令,则清空撤销栈。同时,命令处理器还维护一个反撤销栈,当撤销时,生成撤销命令的逆命令push到反撤销栈,反撤销(redo)时从反撤销栈pop一条命令执行。如果收到信令服务器的编辑命令,则清空反撤销栈。
[0087]
信令服务器还维护一个环形队列,最多保存n个版本的历史操作命令。信令服务器接收来自各客户端的操作命令,进行必要的操作合并,将合并结果的存储地址添加到环形队列,并将合并结果转发给其他客户端。当收到客户端的保存命令,或者根据预设的定时器(比如每隔5分钟),信令服务器对富文本内容进行持久化存储。
[0088]
如图5所示,环形队列的元素节点保存了基于某个特定版本的文本内容的操作序列的存储地址,环形队列的头元素节点指向基于上一版本的文本内容的操作序列的存储地址。当环形队列满元素节点时,基于更早版本文本内容的操作序列会被基于新版本文本内容的操作序列覆盖。
[0089]
如果信令服务器接收到的操作命令所基于的文本内容的版本与环形队列头元素节点指向地址存储的操作命令所基于的版本相同,则认为没有冲突,存储该操作命令并将环形队列的头元素节点指向其存储地址。否则认为有冲突,信令服务器将在环形队列中查找与该操作命令所基于的文本内容的版本相同的元素节点,如果没有找到,则丢弃该操作命令并要求客户端重连,如果找到,则将该元素节点与头元素节点间的所有元素节点指向的操作命令取逆后与该操作命令进行操作合并运算,并将运算结果的存储地址添加到环形队列中,同时将运算结果转发给其他客户端。
[0090]
一个实施实例中的环形队列的数据结构示意如下:
[0091]
[0092][0093]
信令服务器和客户端的通信遵循超小传输协议,该传输协议基于websocket长连接,包括控制指令和数据指令。控制指令包括信令服务器发送给客户端的ack信号、重建连接命令、客户端发给信令服务器的保存命令,数据指令包括客户端获取的最新文本内容和信令服务器下发的操作命令。
[0094]
如图4所示,在一些实施例中,超小传输协议包括以下步骤:
[0095]
初始化各客户端,建立客户端与信令服务器的连接,并从信令服务器获取最新的文本内容及版本号;
[0096]
信令服务器接收客户端1发送的本地操作命令,并将该操作命令所基于文本内容的版本与信令服务器中环形队列头节点指向的版本进行比较:若一致,则向客户端1发送ack信号,并将该操作命令转发到其他客户端;若不一致,则查询环形队列中是否存在和该操作命令基于的文本内容版本相同的指向节点,如果不存在,则丢弃该操作命令并通知客户端1重建连接,如果存在,则将该节点与头节点之间的所有节点所指向的操作命令取逆后与该操作命令进行操作合并运算,并将合并结果的存储地址添加到环形队列,同时,向客户端1发送ack信号,并将合并后的操作命令转发给其他客户端,客户端1在收到ack信号前将丢弃收到的其他操作命令。
[0097]
以上是本发明的一些实施例,基于操作合并算法和超小传输协议,本发明能够更加高效地解决在线文档的数据冲突和同步问题,显著提高了在线富文本文档的协同编辑效率。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。

技术特征:
1.一种在线协同富文本编辑装置,用于客户端,其特征在于,包括:富文本渲染器,用于在初次加载文本时创建渲染树,并根据接收到的来自于命令处理器的操作命令更新所述渲染树;富文本编辑器,用于根据渲染树显示文本内容,还用于接收本地用户的操作指令并将其转换为操作命令后发送到命令处理器;命令处理器,用于接收富文本编辑器和信令服务器发送的操作命令,并对其进行操作合并运算后将合并结果发送到富文本渲染器和信令服务器。2.如权利要求1所述的富文本编辑装置,其特征在于,所述操作命令包括新增操作、编辑操作、删除操作和保持操作;所述新增操作表示插入一段文字,其数据结构为数组,数组的第一位是要插入的字符串,第二位是表示文字样式的对象;所述编辑操作表示修改一段文字的样式,其数据结构为数组,数组的第一位是文字长度,第二位是表示文字样式的对象;所述保持操作是编辑操作的特例,表示保持一段文字的样式不变,表现为一个大于零的整数,该整数为要保持不变的文字的长度;所述删除操作表示删除一段文字,表现为一个小于零的整数,该整数的绝对值为要删除文字的长度。3.如权利要求2所述的富文本编辑装置,其特征在于,所述富文本渲染器用于将命令处理器的操作命令解析并渲染到富文本编辑器的可见区域:富文本渲染器从命令处理器得到一系列新增操作,先将所有新增操作中的文本字符合并成全量文本字符数组,然后根据显示宽度和文笔字体计算整个文本的换行位置,再遍历所有新增操作执行绘制并在换行处换行。4.如权利要求2所述的富文本编辑装置,其特征在于,所述富文本编辑器用于接收本地用户的操作指令并将其转换为操作序列;所述操作序列是一组序列化的操作,包括新增操作、删除操作和编辑操作,用于描述文本编辑的过程;若t(n-1)和t(n)分别表示第n-1和第n个操作x作用在文本的位置,l(x)表示第n个操作x作用的原始文本的长度,则t(n)=t(n-1)+l(x)且t(1)=0;对于新增操作,l(x)=0;对于删除操作,l(x)等于删除字符串的长度;对于编辑操作,l(x)等于编辑字符串的长度;操作序列中的最后一个操作作用在文本的位置应等于原始文本的长度。5.如权利要求4所述的富文本编辑装置,其特征在于,所述操作合并运算用于将多个操作序列合并为一个操作序列:若a、b分别表示两个操作序列,则有c=compose(a,b),表示将操作序列a和b合并为一个操作序列c,其中,对文本先执行操作序列a再执行操作序列b得到的结果与对相同文本直接执行操作序列c得到的结果相同。6.如权利要求1所述的富文本编辑装置,其特征在于,所述富文本编辑器包含两种状态:同步状态和等待同步状态;富文本编辑器的初始状态为同步状态,并维护本地缓存操作命令和待确认命令数组;当本地缓存操作命令或待确认命令数组不为空时进入等待同步状态;当本地缓存操作命令和待确认命令数组都为空时返回同步状态;当收到信令服务器的操作命令时,如果富文本
编辑器处于同步状态则交给命令处理器执行,如果处于等待同步状态则忽略该操作命令。7.如权利要求6所述的富文本编辑装置,其特征在于,所述命令处理器用于按照一定时间间隔将本地缓存操作命令发送到信令服务器并清空本地缓存操作命令:命令处理器将本地缓存操作命令发送到信令服务器时,将操作命令存入待确认命令数组中,当命令处理器收到信令服务器返回的关于该操作命令的ack信号后再将该操作命令从待确认命令数组中移除。8.如权利要求1所述的富文本编辑装置,其特征在于,所述命令处理器还用于维护撤销栈和反撤销栈:当收到富文本编辑器的操作命令时,生成该操作命令的逆命令push到所述撤销栈,撤销该操作命令时从所述撤销栈pop出该操作命令的逆命令执行,同时生成该撤销命令的逆命令push到所述反撤销栈;反撤销时从所述反撤销栈pop出该撤销命令的逆命令执行;如果收到信令服务器的操作命令,则清空所述撤销栈和反撤销栈。9.一种在线协同富文本编辑装置,用于信令服务器端,其特征在于,包括:接收模块,用于接收客户端发送的操作命令和控制指令;运算模块,用于对接收到的操作命令进行操作合并运算;存储模块,用于存储操作命令和文本内容;发送模块,用于发送操作命令、控制指令和文本内容到客户端;所述操作命令用于编辑文本内容,所述控制指令用于信令服务器与客户端间的连接建立和信号确认。10.如权利要求9所述的富文本编辑装置,其特征在于,还包括环形队列维护模块,所述环形队列的元素节点用于保存基于某个特定版本的文本内容的操作序列的存储地址,且环形队列的头元素节点指向基于上一版本的文本内容的操作序列的存储地址;当环形队列满元素节点时,基于更早版本文本内容的操作序列会被基于新版本文本内容的操作序列覆盖。11.如权利要求10所述的富文本编辑装置,其特征在于,若接收到的操作命令所基于的文本内容的版本与环形队列头元素节点指向地址存储的操作命令所基于的版本相同,则认为没有冲突,存储该操作命令并将环形队列的头元素节点指向其存储地址;否则认为有冲突,信令服务器将在环形队列中查找与该操作命令所基于的文本内容的版本相同的元素节点,如果没有找到,则丢弃该操作命令并要求客户端重连,如果找到,则将该元素节点与头元素节点间的所有元素节点指向的操作命令取逆后与该操作命令进行操作合并运算,并将运算结果的存储地址添加到环形队列中,同时将运算结果转发给其他客户端。12.一种在线协同富文本编辑系统,包括互相连接的客户端和信令服务器,其特征在于,所述客户端包括权利要求1~8任一权利要求所述的富文本编辑装置,所述信令服务器包括权利要求9~11任一权利要求所述的富文本编辑装置。13.一种操作合并方法,用于实现权利要求5或9所述的操作合并运算,其特征在于,包括以下步骤:s1、输入待合并的操作序列a和b,并初始化空操作序列c;s2、校验操作序列a的目标长度是否等于操作序列b的基于长度,若相等则进入下一步
骤,否则结束该操作合并运算;所述基于长度表示操作序列作用的原始文本长度,所述目标长度表示操作序列作用后的文本长度;s3、同时遍历操作序列a和b的子操作,根据子操作的较短长度分别取a和b的两个子操作opa、opb进行操作合并运算,并将子操作opa、opb的操作合并结果添加到操作序列c,较长子操作的多余部分留待下次循环合并;s4、重复步骤s3,直至遍历完操作序列a和b的所有子操作,完成该操作合并运算并返回操作序列c。14.如权利要求13所述的操作合并方法,其特征在于,根据子操作opa和opb的操作类型执行不同的操作合并运算:若opa是删除操作,则取opa,opb保留到下次循环;若opb是新增操作,则取opb,opa保留到下次循环;若opa和opb均是编辑操作,则取opb的样式覆盖opa的样式;若opa是新增操作,opb是删除操作,则两者抵消;若opa是新增操作,opb是编辑操作,则取opa,且opb的样式覆盖opa的样式;若opa是编辑操作,opb是删除操作,则取opb。15.一种用于富文本编辑系统的通信传输方法,其特征在于,包括以下步骤:信令服务器在客户端初始化时,响应各客服端的连接请求并在建立连接后将文本内容及版本号发往各客户端;信令服务器接收某客户端发送的本地操作命令,并将该操作命令所基于的文本内容的版本与信令服务器中环形队列头元素节点指向的操作命令所基于的版本进行比较:若一致,则向该客户端发送ack信号,并将该操作命令转发到其他客户端;若不一致,则在环形队列中查找与该操作命令所基于的文本内容的版本相同的元素节点,如果不存在,则丢弃该操作命令并通知该客户端重建连接,如果存在,则将该元素节点与头元素节点间的所有元素节点指向的操作命令取逆后与该操作命令进行操作合并运算,并将运算结果的存储地址添加到环形队列中,同时,向该客户端发送ack信号,并将合并后的操作命令转发给其他客户端;在所述ack信号传输至该客户端之前,该客户端收到的其他操作命令均被丢弃。

技术总结
本发明公开一种在线协同富文本编辑装置、系统及通信传输方法,用户通过富文本编辑器编辑文本时所作的操作都会被转换为相应的操作命令,并传给命令处理器;命令处理器根据用户的操作命令和来自信令服务器的远端用户的操作命令执行操作合并算法,然后将结果传给本地用户客户端,并通过超小传输协议发送给信令服务器;信令服务器对来自多个用户的操作命令进行操作合并,然后通过超小传输协议发送给各个客户端,同时进行持久化存储。本发明能够保证多用户在线协同编辑富文本过程中的数据一致性,提高在线协同效率,增加文档编辑过程的可追溯性。追溯性。追溯性。


技术研发人员:闵亨强 陈阳 李海铭 陈志飞
受保护的技术使用者:深圳英飞无限科技有限公司
技术研发日:2023.05.10
技术公布日:2023/8/23
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐