简 介
talent-aio是基于java aio实现的即时通讯框架,源于作者另一个久经考验的talent-nio框架,但在易用性、性能及代码可读性方面又远远超越了talent-nio。官网地址:http://www.talent-tan.com:9292,上面有大家期待已久的入门文档。
应用场景
IM、实时监控、RPC、推送服务等实时通讯类型的场景
特 点
极简洁清晰易懂的API: 没有生涩难懂的新概念,只需花上30分钟学习helloworld就能很好地掌握并实现一个性能极好的即时通讯应用
极震撼的性能
可同时支持10万级tcp长连接,彻底甩开业界当年的c10K烦恼
每秒可收发283万条消息(约80M)(windows7、i7、8g、群聊场景)
极亲民的内置功能
框架层面帮你检测心跳(tcp server)、发送心跳(tcp client)
框架层面支持自动重连(可设置重连间隔时间和重连次数)
框架层面支持同步消息(消息发送后,等到响应消息再往下执行)
框架层面支持绑定userid(用于用户关联)、绑定groupid(用于群聊)
内置各项统计功能----接受过多少连接、关闭过多少连接、已发送的消息数、已接收的消息数、当前是多少正常连接、当前多少断开的连接等。
Helloword实践
服务端和客户端的消息协议比较简单,消息头为4个字节,用以表示消息体的长度,消息体为一个字符串的byte[]
服务端先启动,监听6789端口
客户端连接到服务端后,会主动向服务器发送一条消息
服务器收到消息后会回应一条消息
之后,框架层会自动从客户端发心跳到服务器,服务器也会检测心跳有没有超时
公用模块
引入maven依赖
定义业务消息包结构
有时候服务器和客户端的业务消息包结构不一样,这种情况下,消息包的定义就不要放在公共模块
编码
有时候服务器端和客户端的编码解码算法不一样,需要分别放在服务器端和客户端完成
解码
有时候服务器端和客户端的编码解码算法不一样,需要分别放在服务器端和客户端完成
约定端口
服务端代码
引入依赖
HelloServerAioHandler类
此处继承自HelloAbsAioHandler,父类已经完成编码和解码的工作
启动程序
客户端模块
引入依赖
HelloClientAioHandler类
此处继承自HelloAbsAioHandler,父类已经完成编码和解码的工作
启动程序