首页 > 其他分享 >使用React+SpringBoot开发一个协同编辑的表格文档

使用React+SpringBoot开发一个协同编辑的表格文档

时间:2023-12-18 09:11:33浏览次数:32  
标签:协同 websocket SpringBoot 表格 前端 React 文档 组件

前言

随着云计算和团队协作的兴起,协同编辑成为了许多企业和组织中必不可少的需求。通过协同编辑,多个用户可以同时对同一个文档进行编辑和更新,从而提高工作效率和协作能力。本文小编就将为大家介绍如何使用React+SpringBoot简单的开发一个协同编辑的表格文档。

环境准备

用到的开发工具:

前端开发工具:VSCode

后端开发工具:IDEA

用到的组件:

表格控件SpreadJSV14.0.0在线表格编辑器react组件版

服务端表格组件GrapeCity Documents for Excel

实现步骤

1.搭建前端项目

首先,前端新建react项目,并按照下面图所示引入SpreadJS以及设计器组件版的相关引用。

然后,集成在线表格编辑器react组件版。

这样前端的准备工作就完成了。

2.搭建后端项目

后端的准备工作,首先安装gradle作为包管理器。当然,这里也可以用其他工具来代替,例如maven,或者源生引入jar包的方式将需要用到的jar包引入进来。然后创建springboot工程配合搭建gradle引用GCExcel以及后面协同需要用到的websocket。

这样后端的准备工作也完成了。

3.核心代码的构建

3.1前端代码

首先是前端,既然要做协同,那么首先就要搭建websocket。

在react中使用websocket不需要引入其他库,只需要创建一个公共组件,封装一下websocket,接下来我们需要监听前端发出的操作。这里因为在线表格编辑器本身将所有用户可能做的操作全部做了封装,所以省下了很多的功夫。

然后对命令再做一些简单封装:

紧接着将封装过的命令发到服务端,之后通过websocket发同步指令:

当协同端通过websocket接收到请求的时候,通过onmessage方法做同步命令,这里在协同端执行command之前需要先撤销之前的监听,避免再发送websocket导致死循环。在执行之后,再次添加监听。

3.2后端代码

这样前端的核心内容就介绍完了,目前前端这样做已经能做基本的协同操作了。

接下来是后端的相关核心代码:

首先,后端搭建对应的websocket:

之后设置websocket的过期时间,当session关闭后5分钟停止给该端口发送websocket请求:

3.3前后端交互

前端发送请求至后端:

后端接收请求后,根据请求在后端重写对应的实现,demo中走了封装使得结构上更加合理,方便重写:

然后在后端GCExcel中加载同一个文档并执行上述操作:

总结

​ 使用React+SpringBoot开发一个协同编辑的表格文档,可以实现多人同时编辑、即时保存和实时更新的功能。通过这种方式,可以提高团队协作效率,确保数据的准确性和一致性。

标签:协同,websocket,SpringBoot,表格,前端,React,文档,组件
From: https://www.cnblogs.com/powertoolsteam/p/17863785.html

相关文章

  • 2、SpringBoot2之入门案例
    2.1、创建Maven工程2.1.1、创建空项目2.1.2、设置项目名称和路径2.1.3、设置项目sdk2.1.4、项目初始状态注意:需要关闭项目再重新打开,才能看到SpringBoot-Part文件夹2.1.5、配置maven2.1.6、创建module右击SpringBoot-Part文件夹,创建新module选择maven配......
  • 文档建立二级索引
    为文章文档建立索引的步骤:选择存储方式:首先需要选择一个合适的数据存储方式。MySQL和HBase都是流行的数据存储方案,MySQL是关系型数据库,而HBase是结构化数据的非关系型数据库。建立存储架构:根据需要存储的数据类型和查询需求建立数据存储架构。在MySQL中可以使用表、字段、索引等结......
  • SpringBoot开启注册发现并使用feign进行远程调用
    1、安装nacos服务端nacos下载地址https://github.com/alibaba/nacos/releases下载nacos之后解压并启动Nacos默认端口是88482、配置maven坐标信息2.1配置坐标管理<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</......
  • 前端docx-templates生成word文档
    说明docx-templates项目地址:https://github.com/guigrpa/docx-templates原文:https://juejin.cn/post/7170695319004315679?searchId=202312171247306E0B93A485DAE6B4E304这个库能干啥?这个库能做的:替换Word模板中的文字实现FOR和IF操作在文档指定位置插入图片在模板里写......
  • springboot连接mysql出现的SSL问题
    1、连接配置spring:datasource:username:rootpassword:rooturl:jdbc:mysql://192.168.0.1:3307/admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaidriver-class-name:com.mysql.cj.jdbc.Driver出现SSL连接问题2、解......
  • react常用hooks
    useMountconstuseMount=(callback)=>{React.useEffect(callback,[])} useUnmounted1constuseUnmount=(callback)=>{2constcallbackRef=React.useRef(callback)34callbackRef.current=callback56React.useEffect(......
  • Java医院3D人体智能导诊系统源码 Uniapp+springboot
    “智能导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号等需求。智能导诊可根据描述的部位和病症,给出适合病症的科室参考。智慧导诊页面会显示男性或女性的身体结构图,可切换正面/背面。通过点击部位选项,选择自己身体不......
  • elasticsearch 文档更新操作:update和update_by_query
    API:(elasticsearch版本7.3)POST/<index>/_update/<_id>POST/<index>/_update_by_query1.POST/<index>/_update/<_id>支持脚本,可以更新、删除或跳过修改文档。更新文档部分内容,传递部分文档,将其合并到现有文档中。#测试--post/update脚本修改文档POST/king_test_p......
  • elasticsearch 文档删除操作:delete和delete_by_query
    api:(elasticsearch版本7.3)#删除指定id的文档DELETE/<index>/_doc/<_id>#按查询条件删除POST/<index>/_delete_by_query1.DELETE/<index>/_doc/<_id>删除指定id的文档#测试--删除文档DELETE/king_test_person/_doc/223/2.POST/<index>/_dele......
  • SpringBoot集成Swagger的使用
    一、前言Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器。Swagger能够在线自动生成RESTFul接口的文档,同时具备测试接口的功能。简单点来讲就是说......