CN109299046B - 一种基于TCP WebSocket协议的协同编辑方法 - Google Patents
一种基于TCP WebSocket协议的协同编辑方法 Download PDFInfo
- Publication number
- CN109299046B CN109299046B CN201811000802.7A CN201811000802A CN109299046B CN 109299046 B CN109299046 B CN 109299046B CN 201811000802 A CN201811000802 A CN 201811000802A CN 109299046 B CN109299046 B CN 109299046B
- Authority
- CN
- China
- Prior art keywords
- user
- queue
- section
- editing
- paragraph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开基于TCP WebSocket协议的协同编辑方法。该协同编辑方法包括:将文档进行分段处理;对用户选择的段落进行加锁控制,当一位用户编辑该段时,对该段进行加锁控制,在加锁控制时不允许其他用户进行编辑,直到释放该段落的锁;当不同的用户选择编辑相同的段落时,方法根据加锁先后顺序进行排队,每次由队列的首位用户进行段落的编辑,其余用户进行等待,在排队等待时,允许排队等待的用户编辑其它段落,以节约协同编辑的总时间;支持所有用户在编辑过程中实时在线聊天,以加强协同编辑过程中的相互交流。通过本方法可以有效提高协同编辑效率。
Description
技术领域
本发明属于计算机技术领域,特别涉及一种基于TCP WebSocket协议的加锁排队协同编辑方法。
背景技术
协同编辑指支持多人在不同终端对同一篇文章进行协作编辑的功能。目前也有一些关于协同编辑功能的软件,他们处理机制几乎相同,支持多个用户在页面对同一篇文章进行编辑,界面符合用户的使用习惯,用户体验性较好。但大部分软件采用的是抢占式编辑策略,这种方式处理较简单,但是这种方式并不能较好的实现用户操作意图的一致性(例如当用户a添加一句话,用户b却删除这句话的前半部分,最后出现的结果是用户a和b都不想要的),且因为网速等客观原因页面会出现很多与用户操作意图不相符的问题。
还有一些方法着眼于加锁技术,但文章加锁粒度的大小多种多样,加锁的数量难以控制,服务器负载压力较大。部分方法引入了用户队列,对于点击相同加锁对象的用户,允许用户排队等待编辑,但也浪费了用户的等待时间,降低了协同编辑效率。
发明内容
基于以上问题,本发明同样着眼于加锁技术,但并不是对于整篇文章的加锁,而是对于段落的加锁,这样缩小了加锁的粒度,支持多人对一篇文章的不同部分的分工编辑问题。同时还引入了排队机制,在每一段中引入了用户队列,即允许多人对同一自然段排队等待,按用户队列顺序给予相应用户编辑权,而不是基于抢占式的加锁。并且还引入一个队列顺序控制方法,对于排队等待的用户,还可排队等待或编辑其他自然段(例如用户a正在编辑第一自然段,用户b在排队第一自然段的同时,可以编辑第二自然段,同理用c也可以排队第一自然段、第二自然段,但也可以编辑第三自然段,等到第一自然段用户a编辑结束后,系统会提醒用户b进行编辑第一自然段,若用户b此时还没完成第二自然段的编辑任务,而用户c完成了第三自然段的编辑任务时,系统会交换第一自然段用户b和用户c在用户队列中的编辑顺序,先允许用户c编辑第一自然段),这样也大大缩短了所有用户对于整篇文章的总编辑时间。同时在过程中用户编辑的段落内容通过WebSocket技术向每一个用户页面展示,以达到每个用户编辑状态的同步。
为了达到上述目的,本发明所采用的技术方案是:
一种基于TCP WebSocket协议的协同编辑方法,其特征在于,包括:
步骤1:用户上传文章,并邀请协作编辑的用户;
步骤2:系统将用户提供文章进行分段处理,将段落信息存储至数据库,存储成功后向每个用户展示段落内容;
步骤3:用户点击加锁编辑相关段落,如果该段落正在被其他用户编辑则进行排队等待,待编辑该段的其他用户编辑结束后才允许编辑该段,用户在等待队列中可以排队编辑其他段落;
步骤4:用户在编辑完成某段内容后点击保存段落,系统将新的段落内容首先更新数据库的相应段落内容,同时利用WebSocket技术将该段新的内容同步至每个用户的编辑界面;
步骤5:系统将用户所做的操作分别记录下来,将操作步骤和操作内容录入数据库,并将操作信息显示至每一位用户的编辑界面;
步骤6:待所有用户完成编辑后,由一名用户对文档进行最后的编辑整改;
步骤7:导出最终编辑内容形成word文档,结束协同编辑;
其中,所述步骤3中,使每一个自然段都含有一个用户等待队列,仅允许每一个队列的第一个用户对本段进行编辑,用户点击编辑文章中的某个自然段,则加入该段对应的用户队列,若为该队列第一个用户则可直接开始编辑,否则等待,在等待过程中,可以对其他段落排队编辑;
所述步骤3中,若前一位用户已经结束编辑该段,轮到该段下一位用户编辑,然而这一位用户正在编辑其他段落,系统会提示该位用户进行编辑,该位用户有两种选择,一种为结束保存自己正在编辑的段落前往编辑提示段落,另一种为稍候编辑,如果用户选择稍候编辑,则系统会寻找该位用户后的第一位没有编辑其他段落的用户,将两用户进行位置交换,让没有编辑其他段落的用户优先编辑该段;
所述步骤3中加锁方式分为界面与数据库两部分,界面部分,在用户点击编辑该段时,界面将该段编辑状态置为可编辑状态,同时利用WebSocket同步该段加锁状态,提示后面想编辑该段的用户,该段已经有多少人正在排队等候,数据库部分,在用户加锁某段后,数据库将相应段落加上标记,代表已经有人正在编辑该段。
进一步的,用户排队等待控制采用的方法包括:建立用户队列、用户进队列、队列顺序控制、用户出队列;
所述建立用户队列,是在提取文档段落信息时就已经为每一个自然段建立起一个空的存储结构,这个存储结构会将文章编号、段落编号以及该段的用户队列一一对应进行初始化;
所述用户进队列,是用户在点击段落对段落进行编辑时,便加入对应段落队列进行等待,若为该队列的第一位则可直接开始编辑,否则等待;
所述队列顺序控制,引入队列顺序控制方法,除了每段为用户分配等待队列之外,单独准备一个链表,该链表用来记录每个段落等待队列中的第一个用户,即记录正在处于编辑状态的用户;
所述用户出队列,是用户在编辑完成点击保存后,分为两部分来处理:第一部分用于处理队列,系统获取文章编号、段落编号以及用户编号,在存储结构中寻找到相应文章的相应段落的用户队列,将该用户编号从队列中移除;第二部分用于处理数据库,将保存更新后的段落内容更新存储到数据库中。
进一步的,所述用户进队列具体流程包括:
步骤(1):用户点击编辑某个自然段;
步骤(2):系统获取文章编号、段落编号、用户编号;
步骤(3):判断存储结构中是否有此文章编号,若有则转步骤(5),没有则转步骤(4);
步骤(4):没有此文章号代表该篇文章还没被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将文章号、段落号与用户队列一一对应起来,具体步骤如下:
步骤(4-1):创建用户队列,并将用户编号插入;
步骤(4-2):将段落号和该段用户队列对应;
步骤(4-3):将文章号与该段落号及用户队列对应;
步骤(5):判断存储结构中是否有用户点击的相关段落编号,若有则转步骤(7),没有则转步骤(6);
步骤(6):没有此段落号代表该段落还没有被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将段落号和该段用户队列对应,具体步骤如下:
步骤(6-1):创建用户队列,并将用户编号插入;
步骤(6-2):将段落号和该段用户队列对应;
步骤(7):往对应用户队列插入用户编号。
进一步的,所述队列顺序控制具体引入的队列顺序控制方法包括:
步骤(1):用户a点击编辑第一自然段,系统将用户a排至第一自然段对应等待队列的第一位,并将用户a同时存储到链表中,用于记录用户a正在编辑第一自然段;
步骤(2):用户b点击第一自然段,排队等待编辑第一自然段,在等待的同时用户b点击编辑第二自然段,系统将用户b排队至第二段对应的等待队列的第一位的同时将用户b存储至链表中;
步骤(3):同理用户c依次点击第一自然段、第二自然段,依次排队等待编辑;
步骤(4):第一自然段用户a编辑结束,点击保存后,系统将链表中的用户a移除,第一段落的等待队列移除用户a,并提醒后一位用户b前往编辑,若用户b选择前往编辑则转步骤(5),若用户选择稍后编辑则转步骤(6);
步骤(5):系统保存用户b正在编辑的段落,并将b弹出第二段的用户队列,提醒用户c前往编辑第二段;
步骤(6):系统会在第一段用户等待队列中搜索用户b后的用户,每搜索一名用户就会验证该用户是否也存在于链表中,若存在则代表该用户正在编辑其他段落,则跳过该用户直至寻找到用户b后第一位没有正在编辑段落的用户,交换用户b与这名用户的位置,这里交换用户b与c的位置,让用户c优先编辑。
进一步的,所述步骤3中,所有用户在协同编辑时可以在编辑页面侧边栏进行实时讨论交流。
进一步的,所述步骤5中,操作信息包括用户信息,操作名称,操作内容。
进一步的,协同编辑环境需要在局域网或互联网下。
与现有技术相比,本发明具有以下特点:
本发明的主要特点包括以下几点:
①采用段落加锁控制,加锁范围合适,且不会出现操作意图不一致导致结果不一致的现象,同时为每一段引入了用户等待队列,加入了一个队列控制方法,让用户在排队等待的同时可以选择编辑或等待其他队列,从而节省了大量时间。
②采用WebSocket技术,保证前端页面的加锁控制能够实时有效控制每个段落的编辑状态,且保证了所有用户段落内容的一致性。
本发明与现有技术相比具有如下优点和有益效果:
①本发明与现有的主流协同编辑处理机制不同,现有主流协同编辑处理机制多为抢占式编辑方法,虽然系统处理起来较为简单,对于编辑中的冲突处理问题如果用这种抢占式编辑会给用户带来不好的用户体验。本发明着眼于加锁机制,即一次仅允许一个用户对一段进行加锁编辑,其余编辑本段的用户进行排队,这种方式至少保证了每个用户都能有机会表达自己的观点,且在编辑过程中可通过在线讨论将段落修改到最符合所有用户心意的程度。同时引入了排队机制和方便用户的排队方法,大大减少了完成编辑一篇文章所需花费的总时间。
②WebSocket是一种成熟的前端同步技术,本发明将其用以控制前端页面中的段落加锁以及段落内容的同步显示,WebSocket技术能够快速同步所有在线用户界面的状态,且具有一定的容错性。
附图说明
图1是本发明所述方法的实施例流程图;
图2是文章处理部分的数据流图;
图3是文章处理部分的流程图;
图4是用户队列控制部分-用户进队列流程图;
图5是用户队列控制部分-队列顺序控制方法示意图;
图6是用户队列控制部分-用户出队列流程图;
图7是段落加锁控制部分-加锁顺序图。
附图中的符号说明:标号1~7分别对应于相应的步骤。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合实施例对本发明作进一步的详细描述。应当指出的是,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
如图1所示,一种基于TCP WebSocket协议的协同编辑方法,其特征在于,包括:
步骤1:用户上传文章,并邀请协作编辑的用户;
步骤2:系统将用户提供文章进行分段处理,将段落信息存储至数据库,存储成功后向每个用户展示段落内容;
步骤3:用户点击加锁编辑相关段落,如果该段落正在被其他用户编辑则进行排队等待,待编辑该段的其他用户编辑结束后才允许编辑该段,用户在等待队列中可以排队编辑其他段落;
步骤4:用户在编辑完成某段内容后点击保存段落,系统将新的段落内容首先更新数据库的相应段落内容,同时利用WebSocket技术将该段新的内容同步至每个用户的编辑界面;
步骤5:系统将用户所做的操作分别记录下来,将操作步骤和操作内容录入数据库,并将操作信息显示至每一位用户的编辑界面;
步骤6:待所有用户完成编辑后,由一名用户对文档进行最后的编辑整改;
步骤7:导出最终编辑内容形成word文档,结束协同编辑;
所述步骤3中,使每一个自然段都含有一个用户等待队列,仅允许每一个队列的第一个用户对本段进行编辑,用户点击编辑文章中的某个自然段,则加入该段对应的用户队列,若为该队列第一个用户则可直接开始编辑,否则等待,在等待过程中,可以对其他段落排队编辑;
所述步骤3中,若前一位用户已经结束编辑该段,轮到该段下一位用户编辑,然而这一位用户正在编辑其他段落,系统会提示该位用户进行编辑,该位用户有两种选择,一种为结束保存自己正在编辑的段落前往编辑提示段落,另一种为稍候编辑,如果用户选择稍候编辑,则系统会寻找该位用户后的第一位没有编辑其他段落的用户,将两用户进行位置交换,让没有编辑其他段落的用户优先编辑该段;
所述步骤3中加锁方式分为界面与数据库两部分,界面部分,在用户点击编辑该段时,界面将该段编辑状态置为可编辑状态,同时利用WebSocket同步该段加锁状态,提示后面想编辑该段的用户,该段已经有多少人正在排队等候,数据库部分,在用户加锁某段后,数据库将相应段落加上标记,代表已经有人正在编辑该段。
本发明着眼加锁机制,即一次仅允许一个用户对一段进行加锁编辑,其余编辑本段的用户进行排队,在编辑过程中可以通过实时讨论交流将意见统一直至将段落修改到最符合所有用户心意的程度,同时引入了排队机制和允许在排队同时排队编辑其他段落的方法,从而减少了协同编辑的总时间。以下将结合附图分为文章处理部分、用户队列控制部分、段落加锁控制部分,共三大部分详细说明。
1、文章处理部分
如图2所示,该部分分段处理用户提供的文档。该部分需要依赖几个处理word文档的相关包,其中包括poi-scratchpad、poi、poi-examples、poi-ooxml、poi-ooxml-schemas、poi-excelant、xmlbeans包。这几个包用以解析两种文档,分别为doc文档以及docx文档。
如图3所示,在扫描文档前,首先按字符个数对文档进行计数,确定整篇文档的字符个数,再循环读取每个字符,对每个字符进行判断,如果不是转行符,则将这个字符存储至一个临时字符串中,如果是转行符,则将之前累加的临时字符串视为一个自然段,将其存储进输出队列中,并将这个转行符清空,为后面字符的读取做好准备,如此循环读取直到到达文章结尾,最后输出段落队列。
2、用户队列控制部分
所述用户队列控制部分是从以下四点对队列进行控制的:建立用户队列、用户进队列、队列顺序控制、用户出队列。
①所述建立用户队列,是在提取文档段落信息时就已经为每一个自然段建立起一个空的存储结构,这个存储结构会将文章编号、段落编号以及该段的用户队列一一对应进行初始化。
②所述用户进队列,是用户在点击段落对段落进行编辑时,便加入对应段落队列进行等待,若为该队列的第一位则可直接开始编辑,否则等待。具体流程如图4所示:
步骤(1):用户点击编辑某个自然段;
步骤(2):系统获取文章编号、段落编号、用户编号;
步骤(3):判断存储结构(上面提及的建立用户队列时产生的存储结构)中是否有此文章编号,若有则转步骤(5),没有则转步骤(4);
步骤(4):没有此文章号代表该篇文章还没被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将文章号、段落号与用户队列一一对应起来,具体步骤如下:
步骤(4-1):创建用户队列,并将用户编号插入;
步骤(4-2):将段落号和该段用户队列对应;
步骤(4-3):将文章号与该段落号及用户队列对应;
步骤(5):判断存储结构中是否有用户点击的相关段落编号,若有则转步骤(7),没有则转步骤(6);
步骤(6):没有此段落号代表该段落还没有被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将段落号和该段用户队列对应,具体步骤如下:
步骤(6-1):创建用户队列,并将用户编号插入;
步骤(6-2):将段落号和该段用户队列对应;
步骤(7):往对应用户队列插入用户编号。
③所述队列顺序控制,引入了一个队列顺序控制方法,如图5示意,系统除了每段为用户分配等待队列之外,单独准备了一个链表,这个链表用来记录每个段落等待队列中的第一个用户,即记录了正在处于编辑状态的用户。下面结合一个实例描述队列顺序如何控制:
步骤(1):用户a点击编辑第一自然段,系统将用户a排至第一自然段对应等待队列的第一位,并将用户a同时存储到链表中,用于记录用户a正在编辑第一自然段;
步骤(2):用户b点击第一自然段,排队等待编辑第一自然段,在等待的同时用户b点击编辑第二自然段,系统将用户b排队至第二段对应的等待队列的第一位的同时将用户b存储至链表中;
步骤(3):同理用户c依次点击第一自然段、第二自然段,依次排队等待编辑。
步骤(4):第一自然段用户a编辑结束,点击保存后,系统将链表中的用户a移除,第一段落的等待队列移除用户a,并提醒后一位用户b前往编辑,若用户b选择前往编辑则转步骤(5),若用户选择稍后编辑则转步骤(6);
步骤(5):系统保存用户b正在编辑的段落,并将b弹出第二段的用户队列,提醒用户c前往编辑第二段。
步骤(6):系统会在第一段用户等待队列中搜索用户b后的用户,每搜索一名用户就会验证该用户是否也存在于链表中,若存在则代表该用户正在编辑其他段落,则跳过该用户直至寻找到用户b后第一位没有正在编辑段落的用户,交换用户b与这名用户的位置,这里交换用户b与c的位置,让用户c优先编辑。
④所述用户出队列,如图6所示,是用户在编辑完成点击保存后,系统会分为两部分来工作:第一部分用于处理队列,系统获取文章编号、段落编号以及用户编号,在存储结构中寻找到相应文章的相应段落的用户队列,将该用户编号从队列中移除。第二部分用于处理数据库,将保存更新后的段落内容更新存储到数据库中。
3、段落加锁控制部分
如图7所示,首先由用户点击某段进行加锁,系统会获取该段段落编号,将编号传递至服务器、数据库,将数据库的相应段落编辑状态改为有人正在编辑,并将信息返回给服务器,服务器在查询无人编辑后,并把信息传递给编辑者页面,页面将这个信息通过WebSocket广播至每一个用户,同步所有人的页面状态,最后提示用户开始编辑。
下面是一个具体实施实例,这里采用的是一篇新闻文稿作为协同编辑的文档,文档为doc类型,具有7个自然段,现模拟三名用户对该篇文档进行协同编辑,为以示区别分别给三名用户命名为用户a、用户b、用户c,三名用户对五个自然段进行相应的修改,具体过程如下:
步骤1:用户a上传该新闻文稿至系统。
步骤2:系统收到文档后,将文档的相关信息存储至服务器备份文件夹下以及数据库中。
步骤3:系统根据该文档路径查找该文档,对该文档进行扫描,将段落内容录入数据库。
步骤4:用户a开始邀请用户b、用户c加入本次协同编辑中。
步骤5:用户b,用户c同意加入协同编辑。
步骤6:系统读取段落内容,并将段落内容展示至所有用户的编辑界面。
步骤7:用户a点击编辑第二自然段,在第二自然段末尾添加,“增强青年学子的使命感和责任感”。
步骤8:用户b点击编辑第三自然段,删除“新华网”
步骤9:用户c也点击编辑第三自然段,即排队等候,直至用户b编辑完成后才可编辑第三自然段,但用户c也可以编辑其他自然段。
步骤10:用户c选择编辑第五自然段,在最后一句前添加,“也是今年团队的新课题”。
步骤11:第一自然段用户a编辑结束,用户a转而编辑第三自然段,排队至用户b、用户c的后面。
步骤12:第三自然段用户b已编辑完成,系统提醒该段后一位用户即用户c前往编辑,由于用户c正在编辑第五自然段,固选择稍后编辑,于是系统将用户c与其后第一个没有在编辑状态下的用户a交换位置,让用户a先编辑第三自然段。
步骤13:用户c结束编辑第五自然段,等待第三自然段的用户a编辑结束。
步骤14:用户a编辑结束,系统提醒用户c编辑第三自然段,用户c前往编辑第三自然段。
步骤15:所有用户编辑结束,所有操作记录入数据库,并显示至用户页面,用户a做最后的编辑调整。
步骤16:编辑结束,生成最终文档。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (6)
1.一种基于TCPWebSocket协议的协同编辑方法,其特征在于,包括:
步骤1:用户上传文章,并邀请协作编辑的用户;
步骤2:系统将用户提供文章进行分段处理,将段落信息存储至数据库,存储成功后向每个用户展示段落内容;
步骤3:用户点击加锁编辑相关段落,如果该段落正在被其他用户编辑则进行排队等待,待编辑该段的其他用户编辑结束后才允许编辑该段,用户在等待队列中可以排队编辑其他段落;
用户排队等待控制采用的方法包括:建立用户队列、用户进队列、队列顺序控制、用户出队列;
所述建立用户队列,是在提取文档段落信息时就已经为每一个自然段建立起一个空的存储结构,这个存储结构会将文章编号、段落编号以及该段的用户队列一一对应进行初始化;
所述用户进队列,是用户在点击段落对段落进行编辑时,便加入对应段落队列进行等待,若为该队列的第一位则可直接开始编辑,否则等待;
所述队列顺序控制,引入队列顺序控制方法,除了每段为用户分配等待队列之外,单独准备一个链表,该链表用来记录每个段落等待队列中的第一个用户,即记录正在处于编辑状态的用户;
所述用户出队列,是用户在编辑完成点击保存后,分为两部分来处理:第一部分用于处理队列,系统获取文章编号、段落编号以及用户编号,在存储结构中寻找到相应文章的相应段落的用户队列,将该用户编号从队列中移除;第二部分用于处理数据库,将保存更新后的段落内容更新存储到数据库中;
步骤4:用户在编辑完成某段内容后点击保存段落,系统将新的段落内容首先更新数据库的相应段落内容,同时利用WebSocket技术将该段新的内容同步至每个用户的编辑界面;
步骤5:系统将用户所做的操作分别记录下来,将操作步骤和操作内容录入数据库,并将操作信息显示至每一位用户的编辑界面;
步骤6:待所有用户完成编辑后,由一名用户对文档进行最后的编辑整改;
步骤7:导出最终编辑内容形成word文档,结束协同编辑;
其中,所述步骤3中,使每一个自然段都含有一个用户等待队列,仅允许每一个队列的第一个用户对本段进行编辑,用户点击编辑文章中的某个自然段,则加入该段对应的用户队列,若为该队列第一个用户则可直接开始编辑,否则等待,在等待过程中,可以对其他段落排队编辑;
所述步骤3中,若前一位用户已经结束编辑该段,轮到该段下一位用户编辑,然而这一位用户正在编辑其他段落,系统会提示该位用户进行编辑,该位用户有两种选择,一种为结束保存自己正在编辑的段落前往编辑提示段落,另一种为稍候编辑,如果用户选择稍候编辑,则系统会寻找该位用户后的第一位没有编辑其他段落的用户,将两用户进行位置交换,让没有编辑其他段落的用户优先编辑该段;
所述步骤3中加锁方式分为界面与数据库两部分,界面部分,在用户点击编辑该段时,界面将该段编辑状态置为可编辑状态,同时利用WebSocket同步该段加锁状态,提示后面想编辑该段的用户,该段已经有多少人正在排队等候,数据库部分,在用户加锁某段后,数据库将相应段落加上标记,代表已经有人正在编辑该段。
2.根据权利要求1所述的基于TCPWebSocket协议的协同编辑方法,其特征在于,所述用户进队列具体流程包括:
步骤(1):用户点击编辑某个自然段;
步骤(2):系统获取文章编号、段落编号、用户编号;
步骤(3):判断存储结构中是否有此文章编号,若有则转步骤(5),没有则转步骤(4);
步骤(4):没有此文章号代表该篇文章还没被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将文章号、段落号与用户队列一一对应起来,具体步骤如下:步骤(4-1):创建用户队列,并将用户编号插入;
步骤(4-2):将段落号和该段用户队列对应;
步骤(4-3):将文章号与该段落号及用户队列对应;
步骤(5):判断存储结构中是否有用户点击的相关段落编号,若有则转步骤(7),没有则转步骤(6);
步骤(6):没有此段落号代表该段落还没有被编辑过,则需要创建用户队列,将用户编号插入用户队列,并将段落号和该段用户队列对应,具体步骤如下:步骤(6-1):创建用户队列,并将用户编号插入;
步骤(6-2):将段落号和该段用户队列对应;
步骤(7):往对应用户队列插入用户编号。
3.根据权利要求1所述的基于TCPWebSocket协议的协同编辑方法,其特征在于,所述队列顺序控制具体引入的队列顺序控制方法包括:
步骤(1):用户a点击编辑第一自然段,系统将用户a排至第一自然段对应等待队列的第一位,并将用户a同时存储到链表中,用于记录用户a正在编辑第一自然段;
步骤(2):用户b点击第一自然段,排队等待编辑第一自然段,在等待的同时用户b点击编辑第二自然段,系统将用户b排队至第二段对应的等待队列的第一位的同时将用户b存储至链表中;
步骤(3):同理用户c依次点击第一自然段、第二自然段,依次排队等待编辑;
步骤(4):第一自然段用户a编辑结束,点击保存后,系统将链表中的用户a移除,第一段落的等待队列移除用户a,并提醒后一位用户b前往编辑,若用户b选择前往编辑则转步骤(5),若用户选择稍后编辑则转步骤(6);
步骤(5):系统保存用户b正在编辑的段落,并将b弹出第二段的用户队列,提醒用户c前往编辑第二段;
步骤(6):系统会在第一段用户等待队列中搜索用户b后的用户,每搜索一名用户就会验证该用户是否也存在于链表中,若存在则代表该用户正在编辑其他段落,则跳过该用户直至寻找到用户b后第一位没有正在编辑段落的用户,交换用户b与这名用户的位置,这里交换用户b与c的位置,让用户c优先编辑。
4.根据权利要求1所述的基于TCPWebSocket协议的协同编辑方法,其特征在于,所述步骤3中,所有用户在协同编辑时可以在编辑页面侧边栏进行实时讨论交流。
5.根据权利要求1所述的基于TCPWebSocket协议的协同编辑方法,其特征在于,所述步骤5中,操作信息包括用户信息,操作名称,操作内容。
6.根据权利要求1所述的基于TCPWebSocket协议的协同编辑方法,其特征在于,协同编辑环境需要在局域网或互联网下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811000802.7A CN109299046B (zh) | 2018-08-30 | 2018-08-30 | 一种基于TCP WebSocket协议的协同编辑方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811000802.7A CN109299046B (zh) | 2018-08-30 | 2018-08-30 | 一种基于TCP WebSocket协议的协同编辑方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109299046A CN109299046A (zh) | 2019-02-01 |
CN109299046B true CN109299046B (zh) | 2023-08-15 |
Family
ID=65165847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811000802.7A Active CN109299046B (zh) | 2018-08-30 | 2018-08-30 | 一种基于TCP WebSocket协议的协同编辑方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299046B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112232776A (zh) * | 2020-10-21 | 2021-01-15 | 苏州速显微电子科技有限公司 | 一种多用户工程协作方法 |
CN113051062A (zh) * | 2021-04-20 | 2021-06-29 | 中国工商银行股份有限公司 | 协同建模方法、装置、电子设备和介质 |
CN113468858B (zh) * | 2021-07-21 | 2023-12-19 | 山谷网安科技股份有限公司 | 一种不依赖于客户端环境的office文件在线编辑的方法 |
US11842190B2 (en) * | 2022-01-18 | 2023-12-12 | Lemon Inc. | Synchronizing multiple instances of projects |
CN114528816B (zh) * | 2022-01-27 | 2023-03-17 | 北京飞书科技有限公司 | 协同编辑的信息展示方法、装置、电子设备和可读介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086771A (zh) * | 2006-06-06 | 2007-12-12 | 温源 | 一种排队叫号方法及其排队叫号设备 |
CN101819577A (zh) * | 2009-01-08 | 2010-09-01 | 国际商业机器公司 | 维护文件系统客户端目录高速缓存的方法、系统和装置 |
JP2011210107A (ja) * | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
CN102262620A (zh) * | 2011-08-04 | 2011-11-30 | 无锡永中软件有限公司 | 一种文档协作方法 |
CN102955785A (zh) * | 2011-08-22 | 2013-03-06 | 北大方正集团有限公司 | 一种文档的网络编辑方法及系统 |
CN103092820A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 一种电子文档协同编辑装置的实现 |
CN103544189A (zh) * | 2012-07-17 | 2014-01-29 | 珠海金山办公软件有限公司 | 锁定正在编辑文件的方法及系统 |
US9176942B1 (en) * | 2014-03-24 | 2015-11-03 | Realquidity Corp. | System and method for synchronizing and editing electronic documents |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和系统 |
CN105743973A (zh) * | 2016-01-22 | 2016-07-06 | 上海科牛信息科技有限公司 | 一种多人多设备实时同步云协作方法及系统 |
CN106357697A (zh) * | 2016-11-14 | 2017-01-25 | 威创软件南京有限公司 | 一种基于WebSocket属性同步的多终端页面同步方法 |
CN107104884A (zh) * | 2017-05-12 | 2017-08-29 | 合肥市群智科技有限公司 | 一种基于websocket的即时消息的任务指派系统 |
EP3230894A1 (en) * | 2014-12-11 | 2017-10-18 | Liveloop, Inc. | Blended operational transformation for multi-user collaborative applications |
CN107491429A (zh) * | 2017-08-18 | 2017-12-19 | 杭州安恒信息技术有限公司 | 一种解决同时编辑文档内容冲突的方法 |
CN107872492A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 一种在服务端支持多用户编辑数据对象的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2424713C (en) * | 2000-08-21 | 2007-12-04 | Thoughtslinger Corporation | Simultaneous multi-user document editing system |
US9158746B2 (en) * | 2012-06-13 | 2015-10-13 | International Business Machines Corporation | Managing concurrent editing in a collaborative editing environment using cursor proximity and a delay |
-
2018
- 2018-08-30 CN CN201811000802.7A patent/CN109299046B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086771A (zh) * | 2006-06-06 | 2007-12-12 | 温源 | 一种排队叫号方法及其排队叫号设备 |
CN101819577A (zh) * | 2009-01-08 | 2010-09-01 | 国际商业机器公司 | 维护文件系统客户端目录高速缓存的方法、系统和装置 |
JP2011210107A (ja) * | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
CN102262620A (zh) * | 2011-08-04 | 2011-11-30 | 无锡永中软件有限公司 | 一种文档协作方法 |
CN102955785A (zh) * | 2011-08-22 | 2013-03-06 | 北大方正集团有限公司 | 一种文档的网络编辑方法及系统 |
CN103092820A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 一种电子文档协同编辑装置的实现 |
CN103544189A (zh) * | 2012-07-17 | 2014-01-29 | 珠海金山办公软件有限公司 | 锁定正在编辑文件的方法及系统 |
US9176942B1 (en) * | 2014-03-24 | 2015-11-03 | Realquidity Corp. | System and method for synchronizing and editing electronic documents |
EP3230894A1 (en) * | 2014-12-11 | 2017-10-18 | Liveloop, Inc. | Blended operational transformation for multi-user collaborative applications |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和系统 |
CN105743973A (zh) * | 2016-01-22 | 2016-07-06 | 上海科牛信息科技有限公司 | 一种多人多设备实时同步云协作方法及系统 |
CN107872492A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 一种在服务端支持多用户编辑数据对象的方法和装置 |
CN106357697A (zh) * | 2016-11-14 | 2017-01-25 | 威创软件南京有限公司 | 一种基于WebSocket属性同步的多终端页面同步方法 |
CN107104884A (zh) * | 2017-05-12 | 2017-08-29 | 合肥市群智科技有限公司 | 一种基于websocket的即时消息的任务指派系统 |
CN107491429A (zh) * | 2017-08-18 | 2017-12-19 | 杭州安恒信息技术有限公司 | 一种解决同时编辑文档内容冲突的方法 |
Non-Patent Citations (1)
Title |
---|
相对位置乐观锁机制及在协同编辑中的应用;毛启容等;计算机辅助设计与图形学学报(第09期);124-129 * |
Also Published As
Publication number | Publication date |
---|---|
CN109299046A (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299046B (zh) | 一种基于TCP WebSocket协议的协同编辑方法 | |
US8683351B2 (en) | Chat user interface for threaded text chat systems | |
US10387836B2 (en) | Systems and methods providing collaborating among a plurality of users | |
US9071615B2 (en) | Shared space for communicating information | |
US20050234958A1 (en) | Iterative collaborative annotation system | |
WO2018166487A1 (zh) | 日程处理方法、装置、系统及存储介质 | |
CN102984050A (zh) | 即时通信中语音搜索的方法、客户端及系统 | |
CN103425640A (zh) | 一种多媒体问答系统及方法 | |
CN109817210A (zh) | 语音写作方法、装置、终端和存储介质 | |
CN112084756B (zh) | 会议文件生成方法、装置及电子设备 | |
CN110390091A (zh) | 一种排版文档生成方法、装置及设备 | |
CN109660447B (zh) | 基于聊天数据的信息定向抓取方法及信息管理系统 | |
CN102193949A (zh) | 一种搜索方法、装置和系统 | |
CN114254158A (zh) | 视频生成方法及其装置、神经网络的训练方法及其装置 | |
CN113010698A (zh) | 多媒体的交互方法、信息交互方法、装置、设备及介质 | |
WO2020000812A1 (zh) | Ppt文档的生成方法及装置、存储介质、计算机设备 | |
CN110659310A (zh) | 一种车辆信息的智能搜索方法 | |
CN103118346A (zh) | 一种发送短信的方法、装置及终端 | |
CN107066438A (zh) | 一种文本编辑方法及装置,电子设备 | |
CN109388673A (zh) | 可多人协作创作的网络创作与阅读系统 | |
US20050235212A1 (en) | Method and apparatus to provide visual editing | |
CN101281544A (zh) | 一种将小样文件转换为扩展标记语言文件的方法和系统 | |
CN110488976A (zh) | 功能管理方法、装置、设备及存储介质 | |
CN110019768B (zh) | 生成文本摘要的方法及装置 | |
CN109948128B (zh) | 一种辅助编辑系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |