smart-socket v1.5.1 发布,bug 修复与 UDP 更新

来源: 投稿
2020-11-25

smart-socket 是一个 AIO 通信框架,可以快速、轻松地开发 Client/Server 网络应用程序。它大大简化了网络编程难度和复杂度,可广泛应用与各类TCP/UDP的通信场景。

smart-socket 是从许多协议(Http、WebSocket、MQTT、二进制私有协议)的实践中积累了大量宝贵经验,从而凝练成了一款极简、易用、高性能的通信框架。

极简

  • 支持各种传输类型、协议,且仅围绕着两大核心接口(MessageProcessor、Protocol)编程开发。
  • 灵活且可扩展的状态机设计,可以清晰地分离关注点。
  • 核心包代码 1447 行,编译后的jar包仅 33 KB(如果对此无明显感触,可以比较其他同类项目)。

易用

  • 文档丰富的 Javadoc 、用户指南和示例。
  • 没有额外的依赖,只要求JDK 8及以上版本。
  • 高度可定制化的插件。已内置一些非常实用且开箱即用的插件:SSL/TLS通信、心跳、断链重连、服务指标统计、黑名单、内存池监测

高性能

  • 更好的吞吐量,更低的延迟
  • 更少的资源消耗
  • 最尽肯能减少不必要的内存拷贝

更新内容

  1. bugfix:修复WriteBuffer中的数组越界问题。该bug存在时长2年以上,昨日重新review代码才被发现,建议尽快升级。
  2. 合并网友提交的UDP相关代码及示例

Maven

<dependency>
    <groupId>org.smartboot.socket</groupId>
    <artifactId>aio-core</artifactId>
    <version>1.5.1</version>
</dependency>
展开阅读全文
7 收藏
分享
加载中
精彩评论
打个广告,国产Servlet容器开源项目正在寻找有缘人参与进来:https://gitee.com/smartboot/smart-servlet
2020-11-25 13:50
3
举报
最新评论 (21)
是不是黏包问题没有解决,我每条消息中间有点间隔(睡一会)就完全没问题。
2020-11-30 13:24
0
回复
举报
哪怕1ns都是成功的
2020-11-30 13:31
0
回复
举报
粘包不是框架能解决的,而是要自己的解码算法去适配
2020-11-30 13:43
0
回复
举报
我分多次刷,一次刷入128字节,第三次服务器连接就关闭了,是我写的代码不对么?用的是循环,writeAndflush
2020-11-27 14:41
0
回复
举报
留意一下状态机。比较大的可能性是解码算法有问题
2020-11-27 16:58
0
回复
举报
您说的状态机是什么意思?算法就是前4个字节(int)标识后面消息体长度,很简单。
2020-11-28 20:42
0
回复
举报
aio-core-1.5.1.jar 已经40K了
2020-11-27 10:34
0
回复
举报
看走眼了,source包33k,运行包41k
2020-11-27 10:55
0
回复
举报
如果要发长消息byteBuffer长度不够怎么办?
2020-11-27 06:20
0
回复
举报
分段解析,或者临时申请个足够容量的buffer来暂存
2020-11-27 10:56
0
回复
举报
我没有进群看教程,我按照https://smartboot.gitee.io/book/smart-socket/chapter-1/1.1-QuickStart/。第二步:协议约定里的的hello word教程里的代码直接复制到eclipse,然后运行。
我用socketTool的socket助手模拟客户端连接smart-socket的tcp服务端进行测试,我发现AioQuickServer下stateEvent方法,只有连接上和客户端主动关闭了才有反应,而发生消息,process方法一点反应输出都没有。

那个教程里的代码必须要制定所谓协议才能接收到数据?我一开始不想按制定协议,只想了解怎么收数据,接收到数据就直接进入process方法里怎么弄?
2020-11-26 10:04
0
回复
举报
解码器直接从 ByteBuffer 提取出 byte[] 并 return
2020-11-26 10:35
0
回复
举报
那怎么获取ByteBuffer的length?
byte length = buffer.get();
  
   byte[] body = new byte[length];
   buffer.get(body);
   return new String(body);
这个不行把
2020-11-26 11:12
0
回复
举报
你这个支持MQTT ?
2020-11-25 14:52
0
回复
举报
打个广告,国产Servlet容器开源项目正在寻找有缘人参与进来:https://gitee.com/smartboot/smart-servlet
2020-11-25 13:50
3
回复
举报
这个很牛逼,很赞, 国产貌似还没有好的 servlet 容器
2020-11-25 22:38
0
回复
举报
加油!加油!
2020-11-26 10:34
0
回复
举报
传统的 servlet 容器功能太多了,其实很多用不上,拖累了性能

建议只支持一部分 servlet 容器中的特性,例如 Session、Filter、Servlet、Cookie、HttpServletRequest、HttpServietResponse 这些基本的组件

jfinal 迭代 10 年,用到容器的组件就那么几个。没有必要支持全功能, 与其更好,不如不同。

smart-servlet 可以当性能当做特色,而要立住这个特色,就必须有取舍,舍去全功能支持,还减少了你的工作量,一举多得
2020-11-27 14:30
0
回复
举报
嗯,现在就是围绕着最核心的功能做开发。至于那些非常低频被使用且价值不大的的功能会考虑插件化,预留未来的扩展能力即可。
2020-11-27 17:03
0
回复
举报
发来贺电
2020-11-25 13:43
0
回复
举报
发来贺电
2020-11-25 13:20
0
回复
举报
更多评论
21 评论
7 收藏
分享
返回顶部
顶部