首先我们看一下主体的一个结构:
maven:
<properties>
<java.version>1.8</java.version>
<netty.version>4.1.37.Final</netty.version>
<fastjson.version>1.2.46</fastjson.version>
<msgpack.version>0.6.12</msgpack.version>
<mybatisPlus.version>3.1.1</mybatisPlus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>msgpack</artifactId>
<version>${msgpack.version}</version>
</dependency>
</dependencies>
client 客户端:
ChatReqHandler: 聊天请求handler
HeartBeatReqHandler: 心跳请求handler
LoginAuthReqHandler: 登录请求handler
NettyClient: 客户端请求
NettyClientTwo: 客户端请求 用于测试第二用户
server 服务端:
LoginAuthRespHandler: 登录响应handler
ChatRespHandler: 聊天响应handler
HeartBeatRespHandler: 心跳响应handler
LoginAuthRespHandler: 登录响应handler
NettyServer: 服务端响应
最终实现效果:
代码已上传至github:https://github.com/beibeirenzhe/netty-im/tree/master/fyrtim