Netty整合SpirngBoot的web实践该怎么进行?

现在给了我一个小任务,非实际工作的,主要是进行web实践测试的任务,要使用SpringBoot+Netty,实现文件的传输。给我的任务要求如下:
1.将发送端与接收端分别做成两个api服务。发送端提供三个RESTful api:①接收一个目录,进行目录下文件的传输;并在传输开始后给api调用者返回服务调用成功的消息②返回传输进程:状态(空闲,传输中,已完成)、当前调用时已传输文件的个数、数据量、传输开始时间、传输结束时间。③重置传输状态。在状态为[传输中]和[已完成]时不允许开始新的传输,只有空闲状态能进行新的传输。

这里关于返回传输进程和重置传输状态两个我都能理解,但是比较不能理解的是,将发送端和接收端做成两个api服务具体是什么意思?
Netty服务端(Server)整合SpringBoot一般不是在程序运行的时候就开启吗?那做成api服务是什么意思?还是指我需要将服务端的开启放在发送端(Client)发送文件请求之后?但是我不理解的是这样不就变成了发送端请求之后再开启Server?还有就是在这种情况下(就是我发送端发送了请求之后再开启服务端的NettyServer的话),如果我调用发送端的api并开始传输文件,我如何把请求转发给服务端?因为我没做过实际的项目和业务,实在不懂这个测试具体是要怎么完成业务流程,想请问下到底是什么意思

大概意思是你需要实现两个SpringBoot项目,一个作为发送端,一个作为接收端。(模拟真实场景中的客户端和服务器端)在发送端内部实现Netty客户端,通过RESTful API接收传输请求,并将请求转发给Netty客户端进行文件传输。在接收端通过RESTful API接收传输请求,保存传输的文件,并返回传输进程状态和重置传输状态。

springboot启动 再启动个netty线程,
一般都会初始化 ChannelInitializer 对外暴露路径 大概这样

pipeline.addLast("http-request",new HttpRequestHandler("/ws"));
        pipeline.addLast("WebSocket-protocol",new WebSocketServerProtocolHandler("/ws"));

你好,其实就是要你使用Netty的服务端和客户端,Netty有现成的,不过要是要投入学习成本,如果你原意的话,可以使用我的RPC框架,也是基于Netty实现的,走了很多弯,比如我这个博客管理系统,就是基于Netty的,需要两个SpringBoot,一个作为客户端,一个作为服务端,其实变相地说,就是一个Dubbo或者SpringCloud微服务架构。链接地址:https://github.com/fyupeng/distributed-blog-system-api ,觉得可以 不妨 Start 下?
它就是用到了开源RPC框架 https://github.com/fyupeng/rpc-netty-framework/
而且对于它的功能都在主页罗列出来了,不知道是否能帮助到你呢!
而你不理解的地方,我帮你捋顺一下:

步骤:

  1. 首先,从网络协议解析来看或许更容易理解,前提学过计网基础中的七层OSI和TCP5层模型;
  2. SpringBoot存在的意义,就是为了支持浏览器的Http协议,帮你解析和发送Http上层应用协议;
  3. 而 Netty 是解析之后的数据的自行处理,它里面有自己的一套解析协议,你又可以再做一套自定义协议,相当于在Http协议之下、TCP协议之上的中间一层协议;
  4. Restful由SpringBoot提供、目录映射地址由tomcat提供、请求转发给服务端,就是在与浏览器交互的SpringBoot这台服务器当成Controller,内部又使用Netty的客户端,来传输协议到另一台SpringBoot,另一台不需要开启Tomcat,只需要重写SpringBoot的启动程序run方法,让Netty服务端启动占用端口,以此满足通过端口来协议通信。
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你看下这篇博客吧, 应该有用👉 :数据交换技术(*):电路交换,报文交换,分组交换的概念,特点和优缺点以及存储转发技术概念
  • 除此之外, 这篇博客: 计算机网络学习日记中的 数据链路层:数据链路层简称为链路层。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束,这样就能从中提取出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去。(负责在节点之间的数据传输) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^