# aim **Repository Path**: clbDream/aim ## Basic Information - **Project Name**: aim - **Description**: aim是一套基于Netty框架开发的一套网络通信、消息推送快速开发框架,可应用于信令推送,即时聊天,移动设备指令推送等领域。开发者可沉浸于业务开发,不用关心消息通道链接,消息编解码协议等繁杂处理。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 4 - **Created**: 2023-03-14 - **Last Updated**: 2025-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 在线文档 ## [https://www.yuque.com/alum/agigf8/gezg25](https://www.yuque.com/alum/agigf8/gezg25) --- ## 项目介绍 AIM是一套完全基于Netty的消息推送框架,可应用于信令推送,即时聊天,移动设备指令推送等领域。开发者可沉浸于业务开发,不用关心消息通道链接,消息编解码协议等繁杂处理。 AIM采用业内主流开源技术构建,易于扩展和使用,并完美支持集群部署支持海量链接,目前支持websocket,android,ios,桌面应用,系统应用等多端接入持,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用即时消服务。 用时7年 基于AIM的项目已经运行在全国各个地方,包括上司公司,各地政务系统,警务系统等服务于上百家客户,希望AIM也能为您带来价值,如果您也希望加入项目成为贡献者,请联系我。 #### 1.支持TCP、WebSocket统一端口接入管理 #### 2.TEXT、JSON、ProtoBuf、TLV、Binary等数据拆解包协议 #### 3.开源项目中惟一具备完善群组项目的良心组件 #### 4.支持Redis、RabbitMq集群 #### 5.支持Nacos等注册配置中心 --- ## 项目位置 Gitee: https://gitee.com/alum/aim Github: https://github.com/AlumXi/aim --- ## 演示项目 VUE(Web)项目: https://gitee.com/alum/aim-vue APP(Net7)项目: https://gitee.com/alum/aim-chat --- ## 联系作者 邮箱: alum@live.cn       微信:alum-xi           QQ:349545750
--- ## 使用说明 ### 1.Maven引入:aim-cluster、aim-starter或者alum-all对应的jar,如下: xin.alum aim-all ${last_version} ### 2.代码集成: `AIM.start();` //可参阅aim-server中的AimStarter类 注:AimReceiver可以被重写,完成自定义业务处理,可参考[AimReciveService.java](aim-example%2Faim-server%2Fsrc%2Fmain%2Fjava%2Fxin%2Falum%2Faim%2FAimReciveService.java) ### 3.通信数据与握手协议 >、默认收发消息是基于ProtoBuf的Sent、Reply对象 >、若自定义数据包可通过重载AimReceiver的onText和onByte来实现自定义数据接受及业务处理 >、通信数据解封包:目前AIM支持Text、Json、ProtoBuf、Tlv、Binary五种通信数据类型,默认为配置项:Aim.agreement >、WebSocket连接可通过URL握手时的agreement参数由客户端指定其通道数据类型协议 >、TCP连接可通过连接后直发0-4字数(测试用,不推荐)确定,也可以通过Packet.Login(推荐)对接来实现握手 >、握手业务认证处理由AimReceiver的onHand**方法来接受处理,认证失败AIM会自动断开其连接 ### 4.集群配置 >、默认为非集群模式 >、开启集群方式为在yml配置文件中设置 aim.cluster.mode为redis或rabbitmq,默认为none; >、集群模式启动aim-server前需要先准备好Redis或Rabbit,并在对应Server中配置,spring的Redis和Rabbitmq配置,可参阅aim-server中的配置 >、集群订阅消息处理:集群消息订阅可实现xin.alum.aim.groups.ClusterMessage 接口的onMessage来实现并通过Aim.Start([ClusterMessage])进行传递,可参阅aim-server中的ClusterMessage及AimStarter类 ### 5.源码部署测试 aim-server和aim-nacos可以作为服务端直接启动,aim-nacos需要nacos-server启动,若无nacos可直接启动aim-server 操作步骤如下: (1).clone AIM项目源码到本地,通过Idea打开aim项目源码 (2).启动aim-server项目 (3).通过Jmeter等测试工具连接aim-server的Tcp/WebSocket的端口8090(默认) (4).WebSocket接入地址:ws://127.0.0.1:8090/ws?token={不为空即可}&agreement=Json (5).Socket接入地址:tcp://127.0.0.1:8090 (TCP可以直连发1-5数字进行握手,1-5为协议编号等同于4中agreement参数,可参阅源码Packet.proto文件中的Agreement对象) 参数说明:token为用户对象,身份参数,agreement为通信协议能数,默认为json --- ### 6. aim-example 实例项目 JAVA: 此项目是基于Java语言实现的服务端(Server)与客户端(Client)控制台演示实例,对应数据协议均有实现 JS/TS:请参阅[aim-vue](https://gitee.com/alum/aim-vue)项目 C#/App: 请参阅[aim-chat](https://gitee.com/alum/aim-chat)项目 --- [更新日志](upgrade.md ':include')