自主研发异步通信框架Minma(支持长连接和短连接)

Minma是英文Minma Is Not Mina的简称

该框架采用Java NIO的核心技术,实现了基于事件驱动的多线程异步通信框架,支持常见的长连接(腾讯QQ)短连接(http通信)

对于开发人员而言,所有的底层技术都是透明的,开发人员仅仅只需要处理业务逻辑,把复杂的NIO简化成了类似Java Swing事件驱动式的编程。


 

长连接实例图

自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 
具体通信流程
1.客户端连接服务端,服务端通过Selector接收到连接请求,将其socketChannel通道保存到通道集合,并触发客户端连接事件
2.客户端发送数据包请求到服务端,服务端将请求的SelectionKey压入“读消息生产者队列”,立即进入下一批Select
3.读消息消费者线程池中派遣一个就绪线程从客户端读取数据包DataPacket,并触发onReaded事件
4.开发人员在onReaded事件编写逻辑代码,并且决定读入的数据包的去向(返回给客户端,还是结束)
5.若在onReaded事件里,开发人员决定数据包要返回到客户端,则将该SelectionKey压入写消息生产者队列
6.写消息消费者线程池中派遣一个就绪线程,将数据包写到客户端,并触发onWrited事件
 
这就完成了长连接的一次通信,在所有的通信中都是异步的,没有出现阻塞的地方
 
若要深入了解,请先了解Java NIO技术
 
 
 
 
 
 
短连接实例
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
和长连接相比,短连接唯一的区别就是,不需要保存客户端的通信通道
通信的节奏为:连接->读入->计算、逻辑->返回客户端->断开连接
 
1.客户端连接服务端,服务端通过Selector接收到连接请求
2.客户端发送数据包请求到服务端,服务端将请求的SelectionKey压入“读消息生产者队列”,立即进入下一批Select
3.读消息消费者线程池中派遣一个就绪线程从客户端读取数据包DataPacket,并触发onReaded事件
4.开发人员在onReaded事件编写逻辑代码,读入的数据包的去向始终是客户端
5.若在onReaded事件里,开发人员决定数据包要返回到客户端,则将该SelectionKey压入写消息生产者队列
6.写消息消费者线程池中派遣一个就绪线程,将数据包写到客户端,并触发onWrited事件
7.断开与客户端连接,触发onClientClose事件
 
 若要深入了解,请先了解Java NIO技术
 
 
 
 
 
 
 
 
 
 
 
下面分别写2个Demo来看看
首先是长连接Demo 
 首先在classpath创建一个配置文件minma.xml
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 
 服务端代码
  
  
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 客户端代码
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 
 运行结果
服务端
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 
 
 
 
下面看看短连接Demo
服务端代码
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 

 

客户端代码

自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog

 

 

运行结果

服务端

自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog

 

 

客户端

自主研发异步通信框架Minma(支持长连接和短连接) - Seans Blog - Seans Blog
 
 
 
 
 
 
 
可以看到框架用起来还是非常方便的,开发人员完全看不到底层的通信,仅仅只需要编写事件逻辑代码即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值