基于WebSocket实现文档锁的方法、存储介质、设备及系统与流程

文档序号:18868188发布日期:2019-10-14 18:51阅读:287来源:国知局
基于WebSocket实现文档锁的方法、存储介质、设备及系统与流程

本发明涉及办公自动化领域,具体涉及一种基于websocket实现文档锁的方法、存储介质、设备及系统。



背景技术:

在线编辑文档已经成为了工作中比较流行的方式,在线编辑文档具有异地读写、共同编辑、相互分享等功能,很好地满足了工作场景多样化的需求。但是工作中经常存在多人共同编辑一份文档的场景,比如开发人员共同使用一个接口文档而且都具有修改权限,那么就会出现冲突,导致内容丢失与覆盖问题,为了解决这一问题,对文档加锁显得尤为必要。文档锁是给每一份文档赋予一个锁标识,当文档无人编辑时显示无锁,一旦有人编辑时立即给文档锁定,此时他人无法在对该文档进行编辑。

目前业界已有的文档锁方法存在很多弊端,比如第一类:只是给文档锁定,无法判断用户身份信息,由于无法识别用户身份信息导致无法区分不同用户,而且无法做到多用户实时刷新;第二类:虽然记录了用户信息,能做到多用户区分,但是他们使用的是传统的http协议(超文本传输协议)模式,每次打开或者关闭文档的时候才会向服务器触发一次请求,无法做到实时连接、实时监听用户动态和数据库更新,另一个比较大的问题是传统的http协议如果频繁的向服务器发起请求会造成服务器压力,当用户量规模比较大的时候传统的文档锁方法已经无法满足。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种基于websocket实现文档锁的方法,能够实现对在线编辑文档的有效管理。

为达到以上目的,本发明采取的技术方案是,包括:

s1:当用户在客户端打开文档时,客户端与服务器间建立websocket连接;

s2:客户端将打开文档的id发送至服务器,服务器基于文档id判断当前用户是否具有访问该文档的权限,若否,则转到s3,若是,则转到s4;

s3:拒绝当前用户对文档的访问并结束;

s4:判断文档是否存在文档锁,若存在,则文档仅可读,若不存在,则文档可读写。

在上述技术方案的基础上,

所述服务器中存储有用户对所有文档相关的访问权限信息,且每个用户对应一账户信息;

所述客户端校验用户账户信息以实现用户在客户端的登录;

当用户使用账户信息登录客户端,并在客户端进行打开文档操作后,客户端与服务器间建立websocket连接,客户端将用户打开文档的id和用户的账户信息发送至服务器,然后服务器基于文档id和用户的账户信息判断当前用户是否具有访问该文档的权限。

在上述技术方案的基础上,步骤s4中,当文档不存在文档锁,用户对文档进行写相关的编辑操作时,客户端向服务器发送文档已被占用的消息,服务器对该文档创建文档锁。

在上述技术方案的基础上,当用户对文档进行写相关的编辑操作时,服务器对文档进行实时监听,若用户未对文档进行任何操作并达到设定阈值时间,则服务器删除文档的文档锁。

在上述技术方案的基础上,当用户对文档进行写相关的编辑操作完成后,客户端通过websocket连接向服务器发送文档已编辑结束的消息,服务器接收消息并删除文档的文档锁。

本发明还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。

本发明还提供一种基于websocket实现文档锁的设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的方法。

本发明还提供一种基于websocket实现文档锁的系统,其特征在于,包括:

通信连接模块,其用于当用户在客户端打开文档时,客户端与服务器间建立websocket连接;

判断模块,其用于使客户端将打开文档的id发送至服务器,服务器基于文档id判断当前用户是否具有访问该文档的权限,若不具有,则指示第一执行模块工作,若具有,则指示第二执行模块工作;

第一执行模块,其用于当当前用户不具有访问文档的权限时,拒绝当前用户对文档的访问并结束;

第二执行模块,其用于当当前用户具有访问文档的权限时,进一步判断文档是否存在文档锁,若存在,则文档仅可读,若不存在,则文档可读写。

在上述技术方案的基础上,所述服务器中存储有用户对所有文档相关的访问权限信息,且每个用户对应一账户信息;

所述客户端校验用户账户信息以实现用户在客户端的登录;

当用户使用账户信息登录客户端,并在客户端进行打开文档操作后,客户端与服务器间建立websocket连接,客户端将用户打开文档的id和用户的账户信息发送至服务器,然后服务器基于文档id和用户的账户信息判断当前用户是否具有访问该文档的权限。

在上述技术方案的基础上,当文档不存在文档锁,用户对文档进行写相关的编辑操作时,第二执行模块使客户端向服务器发送文档已被占用的消息,服务器对该文档创建文档锁。

与现有技术相比,本发明的优点在于:客户端与服务器间建立websocket连接,服务器和客户端间基于websocket连接进行通信,利用websocket协议体量小的特性,提升文档锁管理操作的速率,减少服务器压力,同时基于客户端登录用户的身份信息,对用户访问文档的权限进行管理,同时基于websocket协议的能够向客户端主动发送消息的特性,实现对客户端文档状态的实时监听和实时更改,提升服务器对在线编辑文档的管理性能。

附图说明

图1为本发明实施例中一种基于websocket实现文档锁的方法的流程图;

图2为本发明实施例中一种基于websocket实现文档锁的设备的结构示意图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例提供一种基于websocket实现文档锁的方法,websocket是基于tcp(transmissioncontrolprotocol,传输控制协议)的一种新的网络协议,同时websocket还是一种持久化的协议,客户端和服务器间创建websocket连接,相对于http(hypertexttransferprotocol,超文本传输协议)这种非持久的协议来说,区别点在于:一是服务器能够与客户端间保持长久的联系,而不是轮询的工作模式;二是服务器能够向客户端主动推送消息。本发明实施例的基于websocket实现文档锁的方法具体包括以下步骤:

s1:当用户在客户端打开文档时,客户端与服务器间建立websocket连接。此时用户并没有完成文档的整个打开操作,文档内容并没有呈现给用户,只是进行了文档的打开点击操作,而后客户端与服务器间建立websocket连接,后续的客户端和服务器间均基于websocket连接进行通讯,当后续用户退出文档的编辑,客户端与服务器之间的websocket连接才会断开。采用websocket连接的通信,而不采用传统的http通信方式,利用了websocket持久化协议的特性,避免了传统的通过http协议去轮询所造成了服务器巨大开销,采用websocket协议通信使得服务器在性能上是质的提升。websocket通信代价小,可支持复杂规模的文档系统,因为websocket是持久连接,能够替代http协议的轮询,无需每次都传输identityinfo(身份信息),因此其开销更小,在复杂规模的文档系统里其优势很明显。

s2:客户端将打开文档的id发送至服务器,服务器基于文档id判断当前用户是否具有访问该文档的权限,若否,则转到s3,若是,则转到s4。

服务器中存储有用户对所有文档相关的访问权限信息,且每个用户对应一账户信息,即服务器中记录有哪些用户能够访问哪些文档的权限信息。客户端校验用户账户信息以实现用户在客户端的登录,当用户使用账户信息登录客户端,并在客户端进行打开文档操作后,客户端与服务器间建立websocket连接,客户端将用户打开文档的id和用户的账户信息通过websocket连接发送至服务器,然后服务器基于文档id和用户的账户信息判断当前用户是否具有访问该文档的权限。

s3:拒绝当前用户对文档的访问并结束。服务器通过查询自身的数据库,判断当前用户是否具有访问当前文档的权限,快速判断,并将判断结果通过websocket连接发送至客户端,若用户没有访问权限,则用户是无法对文档进行读写相关的操作的。

s4:判断文档是否存在文档锁,若存在,则说明此时其它用户正在对该文档进行编辑操作,此时当前用户无法对该文档进行写相关的编辑操作,则文档仅可读,若不存在,则说明当前没有其它用户对该文档进行编辑操作,则文档可读写。

文档锁的工作逻辑是:给每一份文档赋予一个锁标识,当该文档无人编辑的时候显示无锁,一旦有人编辑时立即给文档锁定,则文档具有文档锁,并记录编辑文档用户的身份信息,当有其它用户进入编辑模式时会拿用户的身份信息与当前锁的用户信息进行匹配,如果不一致则没有编辑权限,不允许编辑,保证文档在同一时间仅仅能被一用户编辑,而其它有权限的用户在同一时间仅能对文档进行读操作。

在一种实施方式中,当文档不存在文档锁,用户对文档进行写相关的编辑操作时,客户端向服务器发送文档已被占用的消息,服务器对该文档创建文档锁,方式其它用户对文档的编辑。所有用户和文档都建立了身份信息,利用websocket在用户进入文档后与服务器建立实时连接,实时查询文档锁,用户的所有权限操作都经过服务器授权,同一个文档同一时间只允许一名用户对其进行编辑修改,其他人只具有只读权限。

在一种实施方式中,当用户对文档进行写相关的编辑操作时,服务器对文档进行实时监听,若用户未对文档进行任何操作并达到设定阈值时间,则服务器删除文档的文档锁。服务器实时监听用户对文档的编辑操作变化,若用户长时间没有对文档进行编辑操作,则服务器默认为用户进入了睡眠模式,此时服务器自动解除文档的文档锁,同时当前客户端的用户对文档也只能进行读操作模式,将文档资源释放,方式文档不被操作时用户对文档的长时间占用,避免用户长时间进入编辑模式而对文档没有作任何改动,或者是编辑完成后忘记退出编辑模式导致的资源浪费,利用websocket服务器可以主动向客户端发送消息的特性,大大提高了资源的利用效率,

当用户对文档进行写相关的编辑操作完成后,退出编辑模式,客户端通过websocket连接向服务器发送文档已编辑结束的消息,服务器接收消息并删除文档的文档锁,此时该文档变成自由资源,可接受其他用户的编辑,利用了websocket协议体量小特性,反应基本做到毫秒级别。

本发明实施例的基于websocket实现文档锁的方法,在具体实现时,所需要的环境是需要将在线编辑文档的http协议升级到支持websocket的最新版本,或者对在线编辑文档安装支持websocket协议的jdk包,jdk是java语言的软件开发工具包。

本发明实施例的基于websocket实现文档锁的方法,客户端与服务器间建立websocket连接,服务器和客户端间基于websocket连接进行通信,利用websocket协议体量小的特性,提升文档锁管理操作的速率,减少服务器压力,同时基于客户端登录用户的身份信息,对用户访问文档的权限进行管理,同时基于websocket协议的能够向客户端主动发送消息的特性,实现对客户端文档状态的实时监听和实时更改,提升服务器对在线编辑文档的管理性能。

另外,对应上述基于websocket实现文档锁的方法,本发明还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例所述的基于websocket实现文档锁的方法的步骤。需要说明的是,所述存储介质包括u盘、移动硬盘、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

参见图2所示,对应上述基于websocket实现文档锁的方法,本发明还提供一种基于websocket实现文档锁的设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例的基于websocket实现文档锁的方法。

本发明还提供一种基于上述基于websocket实现文档锁的方法的基于websocket实现文档锁的系统,包括通信连接模块、判断模块、第一执行模块和第二执行模块。

通信连接模块用于当用户在客户端打开文档时,客户端与服务器间建立websocket连接;判断模块用于使客户端将打开文档的id发送至服务器,服务器基于文档id判断当前用户是否具有访问该文档的权限,若不具有,则指示第一执行模块工作,若具有,则指示第二执行模块工作;第一执行模块用于当当前用户不具有访问文档的权限时,拒绝当前用户对文档的访问并结束;第二执行模块用于当当前用户具有访问文档的权限时,进一步判断文档是否存在文档锁,若存在,则文档仅可读,若不存在,则文档可读写。

采用websocket连接的通信,而不采用传统的http通信方式,利用了websocket持久化协议的特性,避免了传统的通过http协议去轮询所造成了服务器巨大开销,采用websocket协议通信使得服务器在性能上是质的提升。websocket通信代价小,可支持复杂规模的文档系统,因为websocket是持久连接,能够替代http协议的轮询,因此其开销更小,在复杂规模的文档系统里其优势很明显。

文档锁的工作逻辑是:给每一份文档赋予一个锁标识,当该文档无人编辑的时候显示无锁,一旦有人编辑时立即给文档锁定,则文档具有文档锁,并记录编辑文档用户的身份信息,当有其它用户进入编辑模式时会拿用户的身份信息与当前锁的用户信息进行匹配,如果不一致则没有编辑权限,不允许编辑,保证文档在同一时间仅仅能被一用户编辑,而其它有权限的用户在同一时间仅能对文档进行读操作。

服务器中存储有用户对所有文档相关的访问权限信息,且每个用户对应一账户信息;客户端校验用户账户信息以实现用户在客户端的登录;当用户使用账户信息登录客户端,并在客户端进行打开文档操作后,客户端与服务器间建立websocket连接,客户端将用户打开文档的id和用户的账户信息发送至服务器,然后服务器基于文档id和用户的账户信息判断当前用户是否具有访问该文档的权限。

当文档不存在文档锁,用户对文档进行写相关的编辑操作时,第二执行模块使客户端向服务器发送文档已被占用的消息,服务器对该文档创建文档锁。

本发明实施例的基于websocket实现文档锁的系统,客户端与服务器间建立websocket连接,服务器和客户端间基于websocket连接进行通信,利用websocket协议体量小的特性,提升文档锁管理操作的速率,减少服务器压力,同时基于客户端登录用户的身份信息,对用户访问文档的权限进行管理,同时基于websocket协议的能够向客户端主动发送消息的特性,实现对客户端文档状态的实时监听和实时更改,提升服务器对在线编辑文档的管理性能。

本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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