SSM+Netty实现软硬件通信,真实项目案例

Posted Java猫说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM+Netty实现软硬件通信,真实项目案例相关的知识,希望对你有一定的参考价值。

今天分享的是猫叔自己工作项目中的一个模块实例实现的思路还有流程,在这过程中也是遇到了很多问题,能过顺利解决也是团队沟通的结果。

项目模拟背景:假设我们有一个软件平台,我们的线下产品是一些探测器(传感器)硬件,它们需要在一定范围下定时上传数据给服务器,而且服务器可能还需要对他们下达命令(针对单个),或者广播指令(针对全部),且可能是在管理员的后台下令,也可能是在用户的小程序(APP)等前端应用下令,这样我们就需要一个双向,并发,异步的通信模块,且产品量大,需要考虑到连接池的状态,所以就考虑到了线程的作用。对于连接的监听端口,最好只能一个。

好,通过以上模拟场景,我们在构建思路时,需要将主要的核心点给理解清楚: 1、单端口多连接 2、双向、并发、异步 3、下令、广播 4、数据对数据库的写操作 5、对链接的实例做安全排查 6、系统自保功能(不是所有人都能链接)

整理了这几个点后,由于项目开始时选用了SSM的底层框架(后期迁移Spring Boot)所以需要考虑到最简易的模块化配置方式,在搜罗了几天的开源项目后,我决定使用Netty来帮助我们解决这一问题。

我们先看看我画的项目架构图,算是一个流程吧。 恰如SSM也是运行在Tomcat容器的一个Server项目,我在web.xml添加了一个新的监听器,监听器将启动Netty的线程服务启动类,其将运行Netty的主配置类,BossGroup是处理连接进来的链接实例,WorkerGroup是工作运行的链接,我们对业务的处理就放在TCPServerHandler里面,我对每个实例做了唯一ID的存储,这样Service层可以通过ID获取到链接实例,然后进行下令或广播指令,同时TCPServerHandler也有数据库写的操作,这要针对不同的指令头参数而言。

以上是我们项目的目录,这是引入的关于netty的包。

有关于通信的协议定义还有安全性,这个要看你们项目的业务或要求吧,我们项目采用的是:帧头+ID+指令类型+指令内容+CRC16+帧尾 服务器和单片机那边都以这种协议做处理,保证了数据的安全性。 最后,我截图了测试服务器的日志,可以看到连接的实例ID 还有API下令的广播测试事件。

如果对你有所帮助,请点赞后再走吧。


以上是关于SSM+Netty实现软硬件通信,真实项目案例的主要内容,如果未能解决你的问题,请参考以下文章

从入门到实战,Netty多线程篇案例集锦

SSM商城项目

MVC|JAVA|SSM框架计算机硬件评测交流平台的开发和实现

基于SpringBoot的完成SSM整合项目开发案例

精通系列)创建 Springboot 项目+基于 ssm 多模块项目案例+微服务实战

选择Netty作为基础通信框架 .